您的位置:首页 > 编程语言 > Python开发

Tkinter 8.5 参考手册: a GUI for Python (三)

2013-12-22 11:28 288 查看


4. 布局管理

稍后我们将讨论这些小组件,你的GUI应用程序构建块。组件在一个窗口中如何安排?

虽然 Tkinter有三个不同的“几何管理器”,对于绝大多数组件,笔者强烈地推荐 .grid()几何管理器。该管理器将每一个窗口或框架作为一个表格——一个包含行列的网格。

一个单元是在一行和一列的交点区域。

每一列的宽度是该列中最宽的单元格的宽度。

每一行的高度是该行中最大的单元格的高度。

对于没有填满整个单元格的组件,可以指定如何使用额外的空间。你可以将其保留组将以外额外的空间,或拉伸部件以适应它,在水平或垂直方向。

您可以将多个单元格组成一个较大的区域,这个过程被称为跨越。

当您创建了一个widget,除非你在布局管理器中注册了它,否则它不会出现。因此,建设和放置一个widget是两个步骤的过程,就像是这样的:
self.thing = tk.Constructor(parent, ...)
    self.thing.grid(...)


这里的
Constructor
是按钮,框架等组件之一,并且父类是一个创建了子控件的父控件。所有的组件都有 .grid()方法,你可以用它来告诉布局管理器把它放在哪里。


4.1
.grid()
方法

显示一个组件
w
在你的应用程序屏幕上:
w.grid(option=value, ...)


这个方法在几何管理器中注册一个组件
w
——如果你不这样做,组件将在内部存在,但它不会在屏幕上可见。对于可选项,可参考 Table 1,
“Arguments of the
.grid()
geometry manager”.

Table 1. Arguments of the
.grid()
geometry manager


column
您想要网格化组件的列号,从零开始计数。默认值是零。
columnspan
通常一个部件只占用一个单元网格。但是,你可以在一行中占用多个单元格,并且由
columnspan
选项将它们合并成一个较大的单元格。

例如,
w
.grid(row=0, column=2, columnspan=3)
将会把组件
w
放进第一行中占据了第2,
3, 4列 的一个单元格。
in_
到寄存器中W为一些小部件W2一个孩子,使用IN_= W2。新的父W2必须是建立瓦特时所使用的父控件的后裔。注册组件
w
作为组件
w2
的字组件。

用法: [code]in_=
w2
。 新的父控件 [code]
w2
必须是继承 [code]parent
组件used
when
w
was created.
ipadx
内部 x 填充。这个尺寸被添加在窗口部件的内部,增量在左右两侧。
ipady
内部y 填充。这个尺寸被添加在窗口部件的内部,增量在上下两侧。
padx
外部 x 填充。这个尺寸被添加在窗口部件的外部,增量在左右两侧。
pady
外部 y 填充。这个尺寸被添加在窗口部件的外部,增量在上下两侧。
row
您想要网格化组件的行号,从零开始计数。默认值是下一个未占据的更高编号的行。
rowspan
通常一个部件只占用一个单元网格。然而,你可以占据一列的多个相邻的单元格,通过设置
rowspan
选项网格的数量实现。

可以与
columnspan
选项组合使用,来占据但单元格。例如,

w
.grid(row=3, column=2, rowspan=4, columnspan=5)
将会把组件
w
放置在一个行号3–6,列号2-6合并了 20
个单元格的区域。
sticky
该选项决定如何分配单元格在部件为自然大小状态下未占据的额外空间。见下文。
如果你不提供
sticky
属性,默认行为是将组件在单元格居中放置。

您可以把组件放置在单元格的角落,通过使用
sticky=tk.NE
(右上角),
tk.SE
(右下角),
tk.SW
(左下角), 或
tk.NW
(左上角)。

您可以把组件放置在相对于单元格某个边的中心位置,通过
sticky=tk.N
(上边中心),
tk.E
(右边中心),
tk.S
(下边中心),
tk.W
(左边中心).

使用
sticky=tk.N+tk.S
垂直伸展窗口部件,水平方向上居中。

使用
sticky=tk.E+tk.W
水平伸展窗口部件,垂直方向上居中。

使用sticky=tk.N+tk.E+tk.S+tk.W
在水平和垂直方向伸展部件填补单元格。

其他的组合也会奏效。例如,
sticky=tk.N+tk.S+tk.W
将垂直伸展窗口部件,并把它放置在西(左)边框。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: