可調尺寸窗格部件的建立及其選項
可調尺寸窗格部件作為一個容器的部件, 其內部的子部件之間有窗格, 窗格具有窗柄(handle) 及窗格線(sash), 可以提供使用者調整各部件所佔區域的大小.
import tkinter as tk
parent = tk.Tk()
pane = tk.PanedWindow(parent, option, ...)
選項 | 說明 |
---|---|
bg or background | 背景色 |
bd or borderwidth | 框的寛度, 內定為 2 點素 |
cursor | 當滑鼠移到部件時, 所顯示的滑鼠圖示 |
handlepad | 窗格線起點與窗柄的距離點素, 內定為 8 點素 |
handlesize | 正方形窗柄的邊長點素, 內定為 8 點素 |
height | 部件高度, 未指定則依子部件高度而定 |
opaqueresize | 即時更新窗格尺寸的變更 (True), 或拖弋後才更新 (False) |
orient | 內部部件的擺放方向, VERTICAL 或 HORIZONTAL |
relief | 花邊樣式,內定為 FLAT |
sashpad | 窗格線兩端的間距, 內定為 0 點素 |
sashrelief | 窗格線的樣式, 內定為 FLAT |
sashwidth | 窗格線的寛度, 內定為 2 點素 |
showhandle | 是否顯示窗柄, 內定為否 |
width | 部件寛度, 未指定則依子部件寛度而定 |
增加部件到 PaneWindow 中
新增部件的方式為以 PaneWindow 為父部件建立子部件後, 再以父部件的 add 方法加入, 而不是使用幾何佈局 (grid, place, pack) 的方式.
可調尺寸窗格部件的方法
方法 & 說明 |
---|
add(child[, option=value] …) 新增子部件及其外觀位置的選項 |
forget(child) 移除子部件 |
identify(x, y) 檢視在座標(x, y) 處的物件, (1) 子部件返回空字串(2) 窗柄返回(n, ‘handle’) (3) 窗格線(n, ‘sash’), n 代表其順序, 從0 開始 |
panecget(child, option) 取得子部件的選項值 |
paneconfig(child, option=value, …) 設定子部件的外觀位置選項值 |
panes() 返回子部件列表 |
remove(child) 移除子部件, 同 forget 方法 |
sash_coord(index) 返回窗格線左上角的座標點 (x, y) |
sash_place(index, x, y) |
可調尺寸窗格部件方法的選項
選項 | 說明 |
---|---|
after | 增加在某一個部件之後, 內定為最後面的部件之後 |
before | 增加在某一個部件之前, 內定為最後面的部件之後 |
height | 子部件的高度 |
minsize | 設定最小的寛度 (HORIZONTAL) 或高度 (VERTICAL) |
padx | 子部件的左右間隔 |
pady | 子部件的上下間隔 |
sticky | 子部件在窗格中的位置, 如同 grid 的 sticky 選項 |
width | 子部件的寛度 |
範例視窗及程式碼
import tkinter as tk
root = tk.Tk()
root.wm_title("PaneWindow Demo")
font = ('Courier New', 20, 'bold')
pane_1 = tk.PanedWindow(root, showhandle=True, orient=tk.HORIZONTAL, sashrelief=tk.RAISED)
label_11 = tk.Label(pane_1, text="Pane_1\nLabel 1", font=font, width=20)
pane_2 = tk.PanedWindow(pane_1, showhandle=True, orient=tk.VERTICAL, sashrelief=tk.RAISED)
pane_1.add(label_11)
pane_1.add(pane_2)
label_21 = tk.Label(pane_2, text="Pane_2\nLabel 1", font=font, width=20)
label_22 = tk.Label(pane_2, text="Pane_2\nLabel 2", font=font, width=20)
pane_2.add(label_21)
pane_2.add(label_22)
pane_1.grid(row=0, column=0)
root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結