Tkinter (46) 布局几何管理器

布局几何管理器分为三大类

  • pack 按方位摆放部件, 大致摆放
  • grid 按表格方式摆放部件, 分格摆放
  • place 按座标位置摆放部件, 精确摆放

注: 同一容器, pack 和 grid 不可混用, 会引起 TclError 异常, place 可以混用.


pack 几何管理器

  1. 部件按顺序塞入容器中, 先放入的部件先靠到边缘, 内定为上方边缘, 直到放完后, 再计算容器的大小. 适合按顺序摆放的布局, 或要填满容器,最常用的选项如下
选项 说明 预设值 可用值
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_ 父容器部件
  1. 实例说明
实例 说明
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 方向也延伸
  1. pack 相关方法
方法 说明
pack_configure() 同 pack()
pack_forget() 隐藏部件,但其原有的 pack 选项会全部失去,pack() 会再度显示部件
pack_info() 返回部件 pack 选项及其值的字典
pack_propagate(flag) 是否部件的大小会被子部件所决定, 内定为 True, 如果没有参数, 返回设置值
pack_slaves() 返回部件按封装顺序的子部件列表


grid 几何管理器

  1. 表格方式的布局是最容易清楚如何地布局, 也最容易布局. 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, SW的组合(加+在一起)
in_ 设置新的父部件in_, 该部件必须是本部件建立时的父部件的子部件.
  1. grid 相关方法
方法 说明
w.grid_anchor(anchor=None) 如果没有任何的 row/column 有权重, 设置如何定位 grid, 内定为 nw
w.grid_bbox(column=None, row=None, col2=None, row2=None) 格子cloumncol2 (含), row code>到row2(含) 所占的座标框(left_x,>(left_x, top_y, width, height)
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 表示无部件
  1. 视窗尺寸变化时, 部件的尺寸变化由父部份的表格设置而定.
方法 说明
w.columnconfigure(N, option=value, …) 设置 column N 选项
w.rowconfigure(N, option=value, …) 设置 row N 选项

选项如下所示

选项 说明
minsize 点素的最小尺寸, 在没有部件时, 仍然会不显示.
pad 对最大的格子提供额外的间距
weight 延伸格子更多的空间, 单位为 1/4 尺寸

注: 要能在视窗尺寸变化时延伸部件, 必须在父部件中, 以 columnconfigurerowconfigure 设置 weight 选项, 在部件中也必须在 grid 方法中设置 sticky 可延伸.


place 几何管理器

  1. 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_ 父容器部件
  1. place 相关方法
方法 说明
place_configure() 同 place()
place_forget () 隐藏部件,但其原有的 place 选项会全部失去,place() 会再度显示部件
place_info() 返回部件 place 选项及其值的字典
place_slaves() 返回部件按封装顺序的子部件列表

待续

本作品采用《CC 协议》,转载必须注明作者和本文链接
Jason Yang
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!