Tkinter (46) 佈局幾何管理器

Jason990420發表於2020-08-29

佈局幾何管理器分為三大類

  • 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

相關文章