Tkinter (46) 布局几何管理器
布局几何管理器分为三大类
- pack 按方位摆放部件, 大致摆放
- grid 按表格方式摆放部件, 分格摆放
- place 按座标位置摆放部件, 精确摆放
注: 同一容器, pack 和 grid 不可混用, 会引起 TclError 异常, place 可以混用.
pack 几何管理器
- 部件按顺序塞入容器中, 先放入的部件先靠到边缘, 内定为上方边缘, 直到放完后, 再计算容器的大小. 适合按顺序摆放的布局, 或要填满容器,最常用的选项如下
选项 | 说明 | 预设值 | 可用值 |
---|---|---|---|
after | 封装在该已封装的部件后 | ||
anchor | 定位方式 | CENTER | NW/N/NE/E/SE/S/SW/W/CENTER |
before | 封装在该已封装的部件前 | ||
expand | 窗口尺寸变化时, 是否延伸部件 | 0 | YES/NO, True/False, 1/0 |
fill | 部件放入容器后, 部件尺寸可延伸的方向 | NONE | X/Y/BOTH/NONE |
ipadx | 内部间隔 | 0 | 正整数 |
ipady | 内部间隔 | 0 | 正整数 |
padx | 外部间隔 | 0 | 正整数 |
pady | 外部间隔 | 0 | 正整数 |
side | 部件放入容器后, 往哪个方向靠 | TOP | LEFT/TOP/RIGHT/BOTTOM |
in_ | 父容器部件 |
- 实例说明
实例 | 说明 |
---|---|
pack() | 最小占用空间 |
pack(side=LEFT, fill=Y) | 放到左边, Y 方向延伸到最大位置 |
pack(side=TOP, fill=X) | 放到上方, X 方向延伸到最大位置 |
pack(side=RIGHT, fill=NONE) | 放到右边, 不延伸 |
pack(side=TOP, fill=BOTH) | 放到上面, X 及 Y 方向延伸到最大位置 |
pack(expand = 1) | 放到上方, 容器尺寸变化时, 该部件尺寸不变, 但容器延伸 |
pack(fill=X, expand=1) | 放到上方, X 方向延伸, 容器尺寸变化时, 该部件 X 方向也延伸 |
- pack 相关方法
方法 | 说明 |
---|---|
pack_configure() | 同 pack() |
pack_forget() | 隐藏部件,但其原有的 pack 选项会全部失去,pack() 会再度显示部件 |
pack_info() | 返回部件 pack 选项及其值的字典 |
pack_propagate(flag) | 是否部件的大小会被子部件所决定, 内定为 True, 如果没有参数, 返回设置值 |
pack_slaves() | 返回部件按封装顺序的子部件列表 |
grid 几何管理器
- 表格方式的布局是最容易清楚如何地布局, 也最容易布局. 2D 表格分为两个参数, 垂直方向的列row 与水平方向的行column, 两个参数构成一格, 每一格最多只能放进一个部件, 一个部件也可放进四方形的多个格子. 格子的高度/寛度由该行/列最高/寛的部件决定. 选项有
选项 | 说明 |
---|---|
column row |
每一格的代表方式由行column 及列row 来表示, 都是由 0 开始算起. |
columnspan rowcolumn |
占有多少格则由行数columnspan 及列数rowspan 来表示, (2, 2) 代表部件占用 4 格. |
ipadx ipady |
部件内部水平及垂直方向的间隔 |
padx pady |
部件外部水平及垂直方向的间隔 |
sticky | 每一格的寛度由该列的最大寛度决定, 高度则由行的最大高度决定. 因此格子很可能比部件还大, 所以部件在格子中的位置, 由 sticky 决定1. 内定为置中 CENTER 2. 靠在边上的正中, N (上), S (下), E (右), W (左) .3. 靠在角落上, NE (右上角), NW (左上角), SE (右下角), SW (左下角).4 . 拉长, NS (垂直), EW (水平), NSEW (全部延伸).5. 其他, 可以是 N , E , S 及W 的组合(加+ 在一起) |
in_ | 设置新的父部件in_ , 该部件必须是本部件建立时的父部件的子部件. |
- grid 相关方法
方法 | 说明 |
---|---|
w.grid_anchor(anchor=None) | 如果没有任何的 row/column 有权重, 设置如何定位 grid, 内定为 nw |
w.grid_bbox(column=None, row=None, col2=None, row2=None) | 格子cloumn 到col2 (含), row code>到 |
w.grid_columnconfigure(N, option=value, …) | 设置 column N 选项, 选项如 3 中所示 |
w.grid_configure | 同 grid() |
w.grid_forget() | 隐藏部件, 但其原有的grid 选项会全部失去, grid() 会再度显示部件 |
w.grid_info() | 部件grid 选项及其值的字典 |
w.grid_location(x, y) | 座标点 (x, y) 位置的格子 (col, row) |
w.grid_propagate() | 延伸部件的大小, 内置为 1, 0 则不延伸 |
w.grid_remove() | 隐藏部件, 但其原有的grid 选项仍会保留, grid() 会再度显示部件 |
w.grid_rowconfigure(N, option=value, …) | 设置 row N 选项, 选项如 3 中所示 |
w.grid_size() | 返回部件的水平及垂直的格子数 (columnspan, rowspan) |
w.grid_slaves(row=None, column=None) | 返回在某格子 (row, column) 中的部件列表, None 表示无部件 |
- 视窗尺寸变化时, 部件的尺寸变化由父部份的表格设置而定.
方法 | 说明 |
---|---|
w.columnconfigure(N, option=value, …) | 设置 column N 选项 |
w.rowconfigure(N, option=value, …) | 设置 row N 选项 |
选项如下所示
选项 | 说明 |
---|---|
minsize | 点素的最小尺寸, 在没有部件时, 仍然会不显示. |
pad | 对最大的格子提供额外的间距 |
weight | 延伸格子更多的空间, 单位为 1/4 尺寸 |
注: 要能在视窗尺寸变化时延伸部件, 必须在父部件中, 以 columnconfigure
及 rowconfigure
设置 weight
选项, 在部件中也必须在 grid
方法中设置 sticky
可延伸.
place 几何管理器
- place 几何管理器是最少被使用的一种管理器, 但它是最精准的一种, 依靠的是座标系统.
选项 | 说明 |
---|---|
anchor | 部件定位方向 |
bordermode | 是否考虑父部件外框寛度, “inside” 或 “outside” |
height | 部件高度点素 |
width | 部件寛度点素 |
relwidth | 部件寛度相对父部件比例 0.0 ~ 1.0 |
relheight | 部件高度相对父部件比例 0.0 ~ 1.0 |
x | 部件定位 x 座标 |
y | 部件定位 y 座标 |
relx | 部件定位 x 座标, 相对父部件的比率 0.0 ~ 1.0, 1.0 右端 |
rely | 部件定位 y 座标, 相对父部件的比率 0.0 ~ 1.0, 1.0 下端 |
in_ | 父容器部件 |
- place 相关方法
方法 | 说明 |
---|---|
place_configure() | 同 place() |
place_forget () | 隐藏部件,但其原有的 place 选项会全部失去,place() 会再度显示部件 |
place_info() | 返回部件 place 选项及其值的字典 |
place_slaves() | 返回部件按封装顺序的子部件列表 |
待续
本作品采用《CC 协议》,转载必须注明作者和本文链接