runner.py 984 B

1234567891011121314151617181920212223242526272829303132333435
  1. from pypdevs.simulator import Simulator
  2. import examples.BouncingBalls.PyDEVS.best_target as target
  3. from tkinter import *
  4. from sccd.runtime.libs.DEVui_v2 import UI
  5. class OutputListener:
  6. def __init__(self, ui):
  7. self.ui = ui
  8. def add(self, event):
  9. if event.port == "ui":
  10. method = getattr(self.ui, event.name)
  11. method(*event.parameters)
  12. if __name__ == '__main__':
  13. model = target.Controller(name="controller")
  14. refs = {"ui": model.ui, "field_ui": model.atomic1.field_ui, "button_ui": model.atomic2.button_ui, "ball_ui": model.atomic3.ball_ui}
  15. tkroot = Tk()
  16. tkroot.withdraw()
  17. sim = Simulator(model)
  18. sim.setRealTime(True)
  19. sim.setRealTimeInputFile(None)
  20. sim.setRealTimePorts(refs)
  21. sim.setVerbose(None)
  22. sim.setRealTimePlatformTk(tkroot)
  23. ui = UI(tkroot, sim)
  24. model.atomic1.addMyOwnOutputListener(OutputListener(ui))
  25. model.atomic2.addMyOwnOutputListener(OutputListener(ui))
  26. model.atomic3.addMyOwnOutputListener(OutputListener(ui))
  27. sim.simulate()
  28. tkroot.mainloop()