使根窗口可伸缩
让用户可以放大缩小整个应用窗口,并将多余的空间分配给内部的插件。这需要一些操作。
为了让应用的插件可伸缩,需要用到行列尺寸管理的技术,详细参见 设置行,列尺寸 。
对于 最小的应用 中的应用,它只包含了一个 Quit 插件,如果运行这个应用,调整窗口的大小,按钮不会改变大小,一直保持在窗口的中央。
使用以下代码代替 最小的应用 中的 .createWidgets()
方法。这样, Quit 按钮就会始终填充整个窗口。
def createWidgets(self):
top=self.winfo_toplevel()#1
top.rowconfigure(0, weight=1)#2
top.columnconfigure(0, weight=1)#3
self.rowconfigure(0, weight=1)#4
self.columnconfigure(0, weight=1)#5
self.quit = Button(self, text='Quit', command=self.quit)
self.quit.grid(row=0, column=0,
sticky=tk.N+tk.S+tk.E+tk.W)#6
- ‘’top level window‘’是屏幕中最外层的窗口。但是,这个窗口不是你应用的窗口。调用任何插件的
.winfo_toplevel()
函数,可以达到 top-level 窗口。 - 这一行代码可以使,top level 窗口的第0行网格可伸缩。
- 这一行代码可以使,top level 窗口的第0列网格可伸缩。
- 这一行代码可以使,应用中第0行中插件的网格可伸缩。
- 这一行代码可以使,应用中第0列种插件的网格可伸缩。
- 通过设置参数
sticky=tk.N+tk.S+tk.E+tk.W
允许按钮通过伸缩来填充网格中的 cell 。
还需要改变一个地方。在构造函数 __init__()
中,将第二行改为一下内容:
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid(sticky=tk.N+tk.S+tk.E+tk.W)
self.createWidgets()
必须设置 self.grid()
函数中的 sticky=tk.N+tk.S+tk.E+tk.W
,这样才会伸缩应用中的插件,填充 top-level 窗口的网格。
运行结果:
注:本文翻译自新墨西哥理工大学计算机中心