要将 matplotlib 动画嵌入到 tkinter 帧中,我们可以采取以下步骤
设置图形大小并调整子图之间和周围的填充。
创建一个Tk的顶级小部件,它主要代表应用程序的主窗口
设置此小部件的标题。
将坐标区添加到当前图窗并使其成为当前坐标区。
创建新地物或激活现有地物。
作为子图排列的一部分,在图中添加一个“斧头” 。
使用linewidth=2制作一个虚拟线图。
创建图形渲染到的画布。
创建要操作的图形画布。
创建一个按键事件以退出 tkinter 冬季。
通过重复调用函数*animate*来创建动画。
要显示图形,请使用Show()方法。
import tkinter from matplotlib.backends.backend_tkagg import ( FigureCanvasTkAgg, NavigationToolbar2Tk) frommatplotlib.backend_basesimport key_press_handler from matplotlib import pyplot as plt, animation import numpy as np plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True root = tkinter.Tk() root.wm_title("Embedding in Tk") plt.axes(xlim=(0, 2), ylim=(-2, 2)) fig = plt.Figure(dpi=100) ax = fig.add_subplot(xlim=(0, 2), ylim=(-1, 1)) line, = ax.plot([], [], lw=2) canvas = FigureCanvasTkAgg(fig, master=root) canvas.draw() 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.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) def init(): line.set_data([], []) return line, def animate(i): x = np.linspace(0, 2, 1000) y = np.sin(2 *np.pi* (x - 0.01 * i)) line.set_data(x, y) return line, anim = animation.FuncAnimation(fig, animate, init_func=init,frames=200, interval=20, blit=True) tkinter.mainloop()输出结果
它将产生以下输出 -