diff --git a/examples/user_interfaces/embedding_in_tk_sgskip.py b/examples/user_interfaces/embedding_in_tk_sgskip.py index e7342f3dcbf3..176af735c3ae 100644 --- a/examples/user_interfaces/embedding_in_tk_sgskip.py +++ b/examples/user_interfaces/embedding_in_tk_sgskip.py @@ -21,7 +21,10 @@ fig = Figure(figsize=(5, 4), dpi=100) t = np.arange(0, 3, .01) -fig.add_subplot().plot(t, 2 * np.sin(2 * np.pi * t)) +ax = fig.add_subplot() +line, = ax.plot(t, 2 * np.sin(2 * np.pi * t)) +ax.set_xlabel("time [s]") +ax.set_ylabel("f(t)") canvas = FigureCanvasTkAgg(fig, master=root) # A tk.DrawingArea. canvas.draw() @@ -30,18 +33,34 @@ toolbar = NavigationToolbar2Tk(canvas, root, pack_toolbar=False) toolbar.update() - canvas.mpl_connect( "key_press_event", lambda event: print(f"you pressed {event.key}")) canvas.mpl_connect("key_press_event", key_press_handler) -button = tkinter.Button(master=root, text="Quit", command=root.quit) +button_quit = tkinter.Button(master=root, text="Quit", command=root.quit) + + +def update_frequency(new_val): + # retrieve frequency + f = float(new_val) + + # update data + y = 2 * np.sin(2 * np.pi * f * t) + line.set_data(t, y) + + # required to update canvas and attached toolbar! + canvas.draw() + + +slider_update = tkinter.Scale(root, from_=1, to=5, orient=tkinter.HORIZONTAL, + command=update_frequency, label="Frequency [Hz]") # Packing order is important. Widgets are processed sequentially and if there # is no space left, because the window is too small, they are not displayed. # The canvas is rather flexible in its size, so we pack it last which makes # sure the UI controls are displayed as long as possible. -button.pack(side=tkinter.BOTTOM) +button_quit.pack(side=tkinter.BOTTOM) +slider_update.pack(side=tkinter.BOTTOM) toolbar.pack(side=tkinter.BOTTOM, fill=tkinter.X) canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)