如何使用 Python 中的 Tkinter 窗口使 matplotlib:pyplot 可调整大小?

Han*_*art 5 python tk-toolkit matplotlib

我正在尝试在每个有一个 matplotlib 图的框架中构建一个网格。当我调整窗口大小时,图形保持固定大小并且不会调整大小以适应空白空间。有没有办法让图形根据画布改变其大小(希望它会随着窗口大小而改变)?

在扩展窗口之前 展开窗口后

这就是我在每一帧中嵌入的方式:

self._figure = pyplot.figure(figsize=(4,4))       
self._axes = self._figure.add_subplot(111)
self._canvas = FigureCanvasTkAgg(self._figure, master=self._root)
self._canvas.get_tk_widget().grid(row=1,column=1,rowspan = 4)
Run Code Online (Sandbox Code Playgroud)

Han*_*ans 1

这很可能与这个问题有关。要点是使 Tk 网格单元生长有两个部分:

  • sticky应用于您的小部件时使用关键字grid,例如widget.grid(..., sticky=Tkinter.NSEW(Python 2.7),使其widget能够在所有四个方向上增长。请参阅此文档了解更多详细信息。
  • 告诉父级/主控parent.grid_columnconfigure(...)在通过调用和/或parent.grid_rowconfigure(...)使用所需的行、列和关键字调整大小时使相应的列/行增长weight。例如,parent.grid_columnconfigure(col=0, weight=1)使第一列占用所有可用空间(只要没有其他列,或者它们没有进行类似配置)。有关更多详细信息,请参阅grid_columnconfigure 文档和grid_rowconfigure 文档,例如有关权重如何影响多个列/行的信息。

此页面包含有关网格布局的更多详细信息。