【问题标题】:matplotlib plot toolbar geometry manager in tkinter canvas questiontkinter画布问题中的matplotlib绘图工具栏几何管理器
【发布时间】:2020-07-01 17:09:17
【问题描述】:
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.TclError: cannot use geometry manager pack inside 。已经有网格管理的奴隶 所以我必须使用 'pack' 几何管理器。

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

使用'pack'几何管理器,正确添加工具栏。

'''

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


root_win.mainloop()

'''

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

'''

【问题讨论】:

    标签: matplotlib tkinter


    【解决方案1】:

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

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

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

      File "filepath\lib\site-packages\matplotlib\backends\_backend_tk.py", line 535, in __init__
        self.pack(side=tk.BOTTOM, fill=tk.X)
    

    Tkinter 默认为导航工具栏打包。查看 Tk 嵌入文档here

    【讨论】:

      猜你喜欢
      • 2020-10-17
      • 2015-11-06
      • 2021-12-27
      • 2021-10-06
      • 2021-11-01
      • 2011-02-01
      • 2020-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多