将 matplotlib 动画嵌入到 tkinter 窗口中

将 matplotlib 动画嵌入到 tkinter 窗口中

要将 matplotlib 动画嵌入到 tkinter 窗口中,可以按照以下步骤进行操作。

步骤

  • 设置图形的大小并调整子图之间和周围的填充。

  • 创建一个 Tk Toplevel 小部件,该小部件主要表示应用程序的主窗口。

  • 设置此小部件的标题。

  • 向当前图形添加轴,并使其成为当前轴。

  • 创建一个新图形或激活现有图形。

  • ‘ax’ 添加到图形中作为 subplot 排列的一部分。

  • 使用 linewidth=2 创建一个虚拟的线型图。

  • 创建图形渲染到的画布。

  • 创建图形画布以进行操作。

  • 创建一个 keypress 事件来退出 tkinter,窗口。

  • 通过反复调用函数 animate 创建动画。

  • 要显示图形,请使用 Show() 方法。

示例

import tkinter
from matplotlib.backends.backend_tkagg import (
    FigureCanvasTkAgg, NavigationToolbar2Tk)
from matplotlib.backend_bases import 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("嵌入到 Tkinter 中")

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"你按下了 {event.key}"))
canvas.mpl_connect("key_press_event", key_press_handler)

button = tkinter.Button(master=root, text="退出", 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()

输出

它将产生以下输出 −

将 matplotlib 动画嵌入到 tkinter 窗口中

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程