runner.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import tkinter as tk
  2. import examples.BouncingBalls.PyDEVS.target as target
  3. from sccd.runtime.libs.ui_v2 import UI
  4. from sccd.runtime.DEVS_loop import DEVSSimulator
  5. class OutputListener:
  6. def __init__(self, ui):
  7. self.ui = ui
  8. def add(self, events):
  9. for event in events:
  10. if event.port == "ui":
  11. method = getattr(self.ui, event.name)
  12. method(*event.parameters)
  13. if __name__ == '__main__':
  14. model = target.Controller(name="controller")
  15. refs = {"ui": model.in_ui, "field_ui": model.atomic1.field_ui, "button_ui": model.atomic2.button_ui, "ball_ui": model.atomic3.ball_ui}
  16. tkroot = tk.Tk()
  17. tkroot.withdraw()
  18. sim = DEVSSimulator(model, refs)
  19. sim.setRealTime(True)
  20. #sim.setRealTimeInputFile("./examples/BouncingBalls/input_trace.txt")
  21. sim.setVerbose("./examples/BouncingBalls/PyDEVS/trace.txt")
  22. sim.setRealTimePlatformTk(tkroot)
  23. ui = UI(tkroot, sim)
  24. listener = OutputListener(ui)
  25. sim.setListenPorts(model.out_ui, listener.add)
  26. #model.atomic1.addMyOwnOutputListener(OutputListener(ui))
  27. #model.atomic2.addMyOwnOutputListener(OutputListener(ui))
  28. #model.atomic3.addMyOwnOutputListener(OutputListener(ui))
  29. sim.simulate()
  30. tkroot.mainloop()