Tkinter (14) 可調尺寸窗格部件 PanedWindow

Jason990420發表於2020-08-11

可調尺寸窗格部件的建立及其選項

可調尺寸窗格部件作為一個容器的部件, 其內部的子部件之間有窗格, 窗格具有窗柄(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 子部件的寛度

範例視窗及程式碼

Python

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 協議》,轉載必須註明作者和本文連結

Jason Yang

相關文章