PanedWindow(窗格)元件(Tk8.4 新增是一個空間管理元件。跟 Frame 元件類似,都是為元件提供一個架構,不過 PanedWindow 允許讓使用者調整應用程式的空間劃分。
目錄
何時使用 PanedWindow 元件?
用法
參數
PanedWindow(master=None, **options)(class)
方法
add(child, **options)
forget(child)
identify(x, y)
panecget(child, option)
panecget(child, option)
paneconfig(child, **option)
何時使用 PanedWindow 元件?
當你需要提供一個可供使用者調整的多空間架構的時候,可以使用 PanedWindow 元件。PanedWindow 元件會為每一個子元件生成一個獨立的窗格,使用者可以自由調整窗格的大小。
用法
from tkinter import *
m = PanedWindow(orient=VERTICAL)
m.pack(fill=BOTH, expand=1)
top = Label(m, text='top pane')
m.add(top)
bottom = Label(m, text='bottom pane')
m.add(bottom)
#拖拽滑鼠的左鍵可以改變布局
#中間有條隐藏的線,是二窗格
mainloop()
#建立一個三窗格
from tkinter import *
m1 = PanedWindow() #預設是左右分布的
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text='left pane')
m1.add(left)
m2 = PanedWindow(orient=VERTICAL)
m1.add(m2)
top = Label(m2, text='top pane')
m2.add(top)
bottom = Label(m2, text='bottom pane')
m2.add(bottom)
mainloop()
#顯示搖桿和分割線
from tkinter import *
m1 = PanedWindow(showhandle=True, sashrelief=SUNKEN) #預設是左右分布的
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text='left pane')
m1.add(left)
m2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
m1.add(m2)
top = Label(m2, text='top pane')
m2.add(top)
bottom = Label(m2, text='bottom pane')
m2.add(bottom)
mainloop()
#分割線上的類似正方形的東西就是handle
參數
PanedWindow(master=None, **options)(class)
master--父元件
**options--元件選項,下方詳細列舉了各個選項的具體含義和用法
選項 | 含義 |
---|---|
background | 設定背景顔色 |
bg | 跟background一樣 |
borderwidth | 設定邊框寬度 |
bd | 跟borderwidth一樣 |
cursor | 指定當滑鼠在PanedWindow上飄過的時候的滑鼠樣式 預設值由系統指定 |
handlepad | 調節“搖桿”的位置 例如orient=VERTICAL,則handlepad選項表示“分割線”上的搖桿與左端的距離 預設值是8像素 |
handlesize | 設定“搖桿”的尺寸(由于“搖桿”必須是一個正方形,是以是設定正方形的邊長) 預設值是8像素 |
height | 設定PanedWindow的高度 如果忽略該選項,則高度由子元件的尺寸決定 |
opaqueresize | 該選項定義了使用者調整窗格尺寸的操作 如果該選項的值為True(預設),窗格的尺寸随使用者滑鼠的拖拽而改變 如果該選項的值為False,窗格的尺寸在使用者釋放滑鼠的時候才更新到新的位置 |
orient | 指定窗格的分布方式 可以是HORIZONTAL(橫向分布)和VERTICAL(縱向分布) |
relief | 指定邊框樣式 預設值是FLAT 另外你還可以設定SUNKEN,RAISED,GROOVED或RIDGE |
sashpad | 設定每一條分割線到窗格間的間距 |
sashrelief | 設定分割線的樣式 預設值是FLAT 另外你還可以設定SUNKEN,RAISED,GROOVED或RIDGE |
sashwidth | 設定分割線的寬度 |
showhandle | 設定是否顯示調節窗格的搖桿 預設值為False |
width | 設定PanedWindow的寬度 如果忽略該選項,則高度由子元件的尺寸決定 |
方法
add(child, **options)
--添加一個新的子元件到窗格中
--下方表格列舉了各個 options 選項的具體含義
選項 | 含義 |
---|---|
after | 添加新的子元件到指定子元件後邊 |
before | 添加新的子元件到指定子元件前邊 |
height | 指定子元件的高度 |
minsize | 該選項控制窗格不得低于的值 如果orient=HORIZONTAL,表示窗格的寬度不得低于該選項的值 如果orient=VERTICAL,表示窗格的高度不得低于該選項的值 |
padx | 指定子元件的水準間距 |
pady | 指定子元件的垂直間距 |
sticky | 當窗格的尺寸大于子元件時,該選項指定子元件位于窗格的位置 可選的值有:E、S、W、N(東南西北)以及他們的組合值 |
width | 指定子元件的寬度 |
forget(child)
--删除一個子元件
identify(x, y)
--給定一個坐标 (x, y),傳回該坐标所在的元素名稱
--如果該坐标位于子元件上,傳回空字元串
--如果該坐标位于分割線上,傳回一個二進制組 (n, 'sash'),n 為 0 表示第一個分割線
--如果該坐标位于搖桿上,傳回一個二進制組 (n, 'handle'),n 為 0 表示第一個搖桿
panecget(child, option)
--獲得子元件指定選項的值
panecget(child, option)
--獲得子元件指定選項的值
paneconfig(child, **option)
--設定子元件的各種選項
--下面列舉了各個 options 選項具體含義
after:添加新的子元件到指定子元件後邊
before:添加新的子元件到指定子元件前邊
height:指定子元件的高度