SinGen_tkinter_experiment.py 919 B

123456789101112131415161718192021222324252627282930313233
  1. from SinGen import *
  2. from CBD.realtime.plotting import PlotManager, LinePlot, follow
  3. from CBD.simulator import Simulator
  4. import tkinter as tk
  5. import matplotlib.pyplot as plt
  6. from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
  7. sinGen = SinGen("sin")
  8. fig = plt.figure(figsize=(5, 5), dpi=100)
  9. ax = fig.add_subplot(111)
  10. ax.set_ylim((-1, 1)) # The sine wave never exceeds this range
  11. root = tk.Tk()
  12. # Create a canvas to gvDraw the plot on
  13. canvas = FigureCanvasTkAgg(fig, master=root) # A Tk DrawingArea
  14. canvas.draw()
  15. canvas.get_tk_widget().grid(column=1, row=1)
  16. manager = PlotManager()
  17. manager.register("sin", sinGen.find('collector')[0], (fig, ax), LinePlot(color='red'))
  18. manager.connect('sin', 'update', lambda d, axis=ax: axis.set_xlim(follow(d[0], 10.0, lower_bound=0.0)))
  19. sim = Simulator(sinGen)
  20. sim.setRealTime()
  21. sim.setRealTimePlatformTk(root)
  22. sim.setDeltaT(0.1)
  23. sim.run(20.0)
  24. root.mainloop()