在 tkinter GUI 中使用 matplotlib 菜单栏
Use matplotlib menu bar in a tkinter GUI
如果我使用此脚本创建情节
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
plt.show()
我得到这个结果:
在顶部,我得到一个菜单栏,其中包含缩放、平移和保存绘图等有用的功能。如果我像这样在 tkinter
GUI 中的 canvas 中创建绘图
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
window = tk.Tk()
fig = Figure(figsize=(5, 2), layout="constrained")
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
canvas = FigureCanvasTkAgg(fig)
canvas.draw()
canvas.get_tk_widget().pack()
window.mainloop()
我得到这个结果:
它没有这个菜单栏,但我仍然想在 GUI 中使用该功能。有办法吗?
您必须使用 NavigationToolbar2Tk
手动创建工具栏。
这是代码片段:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
window = tk.Tk()
fig = Figure(figsize=(5, 2), layout="constrained")
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
canvas = FigureCanvasTkAgg(fig)
toolbar = NavigationToolbar2Tk(canvas, window)
toolbar.update()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
canvas.draw()
canvas.get_tk_widget().pack(expand=1)
window.mainloop()
如果我使用此脚本创建情节
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
plt.show()
我得到这个结果:
在顶部,我得到一个菜单栏,其中包含缩放、平移和保存绘图等有用的功能。如果我像这样在 tkinter
GUI 中的 canvas 中创建绘图
import tkinter as tk
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
window = tk.Tk()
fig = Figure(figsize=(5, 2), layout="constrained")
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
canvas = FigureCanvasTkAgg(fig)
canvas.draw()
canvas.get_tk_widget().pack()
window.mainloop()
我得到这个结果:
它没有这个菜单栏,但我仍然想在 GUI 中使用该功能。有办法吗?
您必须使用 NavigationToolbar2Tk
手动创建工具栏。
这是代码片段:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
from matplotlib.figure import Figure
window = tk.Tk()
fig = Figure(figsize=(5, 2), layout="constrained")
ax = fig.add_subplot(111)
ax.plot([1, 2, 3, 4], [1, 4, 5, 3])
canvas = FigureCanvasTkAgg(fig)
toolbar = NavigationToolbar2Tk(canvas, window)
toolbar.update()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
canvas.draw()
canvas.get_tk_widget().pack(expand=1)
window.mainloop()