Python Tkinter:响应式网格

Dea*_*kox 2 python grid tkinter python-2.7 responsive

我有一个带有多个子元素的框架,它们使用grid()几何管理器放置在其中。

如何修改下面的代码以使框架响应?

content.grid(column=0, row=0, sticky='nwse')
userButt.grid(column=2, row=1, sticky='nwse')
favoButt.grid(column=3, row=1, sticky='nwse')
locaButt.grid(column=4, row=1, sticky='nwse')
histScal.grid(column=5, row=1, sticky='nwse')
Run Code Online (Sandbox Code Playgroud)

Bry*_*ley 7

根据经验,无论何时使用grid,都应始终至少为一行和一列赋予非零权重,以便 tkinter 知道在哪里分配额外的空间。默认情况下分配的权重为 0(零)。

两种最常见的情况是,您有一个“英雄”小部件(例如:文本小部件、画布小部件等),它应该根据需要增长和缩小,或者您希望所有东西都同等地调整大小。对于一个小部件获得所有额外空间的情况,只为放置该小部件的行和列赋予权重。如果您希望所有内容均等地调整大小,请为每一行和每一列指定一个权重。

假设您的小部件的父级是content,userButt , etc areroot`,您可能会这样做:

root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,所有额外的空间都将转到第 0 行和第 0 列。


cri*_*ari 5

假设您有一个由网格系统管理的窗口,并且您希望使其能够响应,并知道您使用的总行数和列数。假设总行数=6,总列数=10,使窗口在网格管理系统下响应可以如下完成。

n_rows =6
n_columns =10
for i in range(n_rows):
    root.grid_rowconfigure(i,  weight =1)
for i in range(n_columns):
    root.grid_columnconfigure(i,  weight =1)
Run Code Online (Sandbox Code Playgroud)