这些与grid相关的方法被定义在所有的组件:
w
.grid_bbox(column=None, row=None, col2=None, row2=None)
返回一个4元素的元祖,描述了组件 w
的grid系统中一部分或者全部的边框。 前两个数字返回区域左上角的 x
和y
坐标,后两个数字是宽度和高度。
如果传入 column
和 row
参数, 返回的边框描述了在该行列的单元格的区域。如果你也传入了 col2
和 row2
参数, 返回的边框描述了在该行列 grid 从从列 column
到 col2 ,
从行 row
到 row2
包含的区域。
例如,
返回四个单元格的边框,不是一个。w
.grid_bbox(0, 0, 1, 1)
w
.grid_forget()
这个方法使组件 w
从屏幕上消失。 它仍然存在,只是看不见了。 你可以使用 .grid()
使它重新出现, 但是不保留它的网格操作。
w
.grid_info()
返回一个字典, 它的关键字是 w
的选项名, 和选项名对应的值。
w
.grid_location(x
, y
)
给定一个相对于容器组件的相对坐标 (
, 此方法返回一个元祖 x
, y
)(
,描述了组件 col
, row
)w
网格系统包含屏幕坐标的单元格。
w
.grid_propagate()
通常情况下,所有的组件都调整它们的大小,这意味着它们调正大小以适应内容。 但是, 有时候你想要强制设定一个组件的大小,忽视内容。 为了做到这一点,调用
,这里 w
.grid_propagate(0)w
是你想要强制设置大小的组件。
w
.grid_remove()
这个方法类似 .grid_forget()
, 但是它的选项会被记住,所以如果你使用 .grid()
使它重现, 它将使用同样的网格配置选项。
w
.grid_size()
返回一个2元素的元祖,包含了列数和行数。 在组件 w
的网格系统中。
w
.grid_slaves(row=None, column=None)
返回一个由组件 w
管理的子组件列表,如果没有提供参数,你将得到一个所有的管理组件列表。 用 row=
argument 选择某一行的组件列表, 或者 column=
argument 选择某一列的组件列表。
除非你采取一定的措施,一个给定的组件内部的网格列的宽度将等于其最宽的单元格的宽度,一个网格行的高度将是其最高的单元格的高度。组件的sticky
属性,如果它不完全填充的单元格,只被放置在那里。
如果你想覆盖列和行的自动调整大小,请使用包含网格布局的父组件 w
的这些方法:
w
.columnconfigure(N
, option
=value
, ...)
组件 w 内部
的网格布局,配置列 N
,使给定的value 给option
。对于选项,请参阅下表。
w
.rowconfigure(N
, option
=value
, ...)
组件 w 内部
的网格布局,配置行 N
,使给定的value 给option
。对于选项,请参阅下表。
下面是用于配置的列和行的尺寸的选项。
Table 2. Column and row configuration options for the .grid()
geometry manager
minsize |
以像素为单位的列或行的最小尺寸。如果有什么的给定列或行中,也即使您使用此选项它将不会出现,。 |
pad |
像素数将被添加到给定的行列,增量加到最大的单元格的行或列。 |
weight |
使用此选项使列或行拉伸,提供一个值,分配额外的空间时,给出了这样的列或行的相对权重。例如,如果一个部件 w 包含一个网格布局,这些线将分发四分之三的额外空间到第一列和四分之一到第二列: w.columnconfigure(0, weight=3) w.columnconfigure(1, weight=1)如果不使用此选项,则列或行不会延长。 |
你想让用户调整整个应用程序的窗口大小,并且分配内部部件额外的空间吗? 这些需要一些不明显的操作。
对于行列大小管理来说,使用这些技术是很必要的。 详细描述在Section 4.3, “Configuring column and row sizes”, 使你的应用程序部件网格可拉伸。 当然,单独使用是不够的。
考虑到琐碎应用详细描述在 Section 2, “A minimal application”, 其中只包含一个Quit按钮。如果你运行这个应用程序,并调整窗口的大小,按钮保持相同的大小,窗口内居中。
这是在 minimal application中一个 .__createWidgets()
的一个替代方法。 在这个版本, 按钮总是填充所有可用空间。
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, 6 sticky=tk.N+tk.S+tk.E+tk.W)
1 | “top level window”是屏幕上的最外层的窗口。然而,这个窗口是不是你的应用程序窗口,它是应用实例的父。要获得顶层窗口,在你应用程序中的任何组件调用 |
2 | 这行使顶层窗口的的第0行网格拉伸。 |
3 | 这行使顶层窗口的的第0列网格拉伸。 |
4 | 使应用程序组件的的第0行网格拉伸。 |
5 | 使应用程序组件的的第0列网格拉伸。 |
6 | 参数 |
这是另一个必须被做的改变。 在构造函数中, 向下面那样改变第二行:
def __init__(self, master=None): tk.Frame.__init__(self, master) self.grid(sticky=tk.N+tk.S+tk.E+tk.W) self.createWidgets()
参数 sticky=tk.N+tk.S+tk.E+tk.W
对于 self.grid()
是必要的,使应用程序部件将扩大,以填补顶层窗口的网格的单元格。