Matplotlib 绘图工具栏几何管理器在 tkinter 画布问题


from tkinter import Tk
import matplotlib
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
matplotlib.use('TkAgg')
root_win = Tk()
root_win.title('matplotlib in tkinter')
fig = Figure(figsize = (5, 4), dpi = 100)
plot = fig.add_subplot(1, 1, 1)
plot.plot([1, 2, 3])
canvas = FigureCanvasTkAgg(fig, master = root_win)
canvas.draw()
canvas.get_tk_widget().grid(row = 0, column = 0)

'''

如果在画布中使用"网格"几何管理器,当我添加下面的工具栏时会出现: _tkinter。Tcl错误:无法使用 中的几何管理器包。已经有由电网管理的从属 所以我必须使用"包"几何管理器。

canvas.get_tk_widget().pack(side = 'top', fill = 'both', expand = 1)

使用"打包"几何管理器,正确添加工具栏。

'''

toolbar = NavigationToolbar2Tk(canvas, root_win)
toolbar.update()
canvas.get_tk_widget().pack(side = 'top', fill = 'both', expand = 1)

root_win.mainloop()

'''

我可以通过其他方式将"网格"几何管理器用于工具栏吗?

'''

如果要将网格几何管理器与NavigationToolbar2Tk一起使用,则需要使用pack_toolbar=False。

toolbar = NavigationToolbar2Tk(canvas, root_win, pack_toolbar=False)
self.toolbar.update()
self.toolbar.grid(row = 0, column = 0)

我遇到了同样的问题。检查我得到的错误代码:

File "filepathlibsite-packagesmatplotlibbackends_backend_tk.py", line 535, in __init__
self.pack(side=tk.BOTTOM, fill=tk.X)

Tkinter 默认为导航工具栏打包。在此处查看 Tk 嵌入的文档。

最新更新