Tkinter (39) 樹檢視部件 ttk.Treeview

Jason990420發表於2020-08-28

ttk 樹檢視部件說明

部件可以包含多個列位, 第一列稱為圖示列, 用來顯示收起或展開的圖示, 其他列可以用來顯示其他的資訊.

專案 說明
item 在樹結構中, 每一個專案
iid 每一個專案都有一個各自單獨的識別碼
child 子專案
parent 父專案, 最頂層為空字串
ancestor 父項以上的所有專案
visible 最頂層的專案, 永遠可見, 只有父項被展開, 子項以下的專案才可能看得見
descendant 子項以下所有的專案
tag 每一個專案可以對應到一個或多個的標籤, 使用標籤來對該群體的專案作一些設定或動作等

ttk 樹檢視部件的建立及其選項

w = ttk.Treeview(parent, option=value, ...)
選項 說明
class_ 部件分類名稱,建立後不能改變
columns 序列的識別碼字串, 該序列不包含圖示列的識別碼, 第一列圖示列的識別碼永遠為 "#0"
cursor 滑鼠懸停在按鈕上時顯示的滑鼠, 內定為空字串, 繼承父部件的選項
displaycolumns 指定各列顯示與否及其順序, "#all" 代表全部, 或整數的列表, 識別碼列表, 各列的內容必須按此順序提供
height 部件的行數
padding 部件內部子部件的外部間隔, 可以是單一尺寸, 或最多 4-tuple, 順序為 (left, top, right, bottom), 省略部份, 由其他代替, 如 a=(a,a, a,a), (a,b)=(a,b,a,b), (a,b,c)=(a,c,b,c), (a,b,c,d)
select 專案被選擇的模式, 'browse' (單選) /'extended' (可多選) / 'none' (不可選)
show 內定為顯標題列, 'tree' 為不顯示
style 生成部件的樣式
takefocus 鍵盤聚焦, '' (內定) 同 True, False 或 True

ttk 樹檢視部件的方法

方法 說明
bbox(item, column=None) 專案列所在的左上角座標及尺寸, 返回 (x, y, width, height), 如果專案不可見, 返回空字串; 如果沒給 column 引數, 返回的是整行的座標及尺寸
column(cid, option=None, **kw) 設定某列的選項, 使用kw, 查詢使用 option; 如果沒給 option 及 kw, 返回字典值; 選項有
anchor - 該列的定位,內定為 'w'
id - 列名, 唯讀
minwidth - 最小列寛點素, 預設值為 20
stretch - 列寛可否跟著部件尺寸變化時調整, 預設值為 1
width - 預設列寛點素, 內定為 200
delete(*items) 刪除專案, 包含其所有的子項
detach(*items) 從可見的列表中移除, 專案仍然存在, 包含其所有的子項, 使用 move 返法還原
exists(iid) 部件中是否包含該專案, 不管是否可見
focus([iid]) 設定或返回聚焦, 無聚焦專案, 返回空字串
get_children([item]) 返回子專案 tuple, 無 item 引數, 則為最頂層
heading(cid, option=None, **kw) 設定標題列的選項, 使用 kw, 查詢使用option; 如果沒給option 及 kw, 返回字典值; 選項有
anchor - 定位, 內定為'w'
command - 點選時回撥函式
image - 圖片
text - 文字字串
identify_column(x) 返回 x 座標對應的列 '#n', 不論圖示列是否可見, n:0 為圖示列, 其他列都是從 1 開始排起
identify_element(x, y) 在座標 (x, y) 處的元件名, 無則為空字串
identify_region(x, y)) 在座標(x, y) 處部位的字串
'nothing'
'heading' (標題列)
'separator' (標題列分隔處)
'tree' (圖示列)
'cell' (其他專案列)
identify_row(y) 返回 y 座標對應的行的 iid, 無則返回空字串
index(iid) 返回專案 iid 相對於父項的索引
set_children(item, *newChildren) 設定序列的專案為 item 的子項, 原有的子項不保留
insert(parent, index, iid=None, **kw) 父項 parent 下插入子項, 最頂層為空字串, index 為插入處的索引, 最後一項使用 'end'; 使用 iid 作為該項的識別碼, 無則自動設定並返回. kw 選項有
image - 圖示列圖示右邊的圖片
open - 專案是否開啟, True 子專案會可見
tags - 指定相關的標籤,單一或序列的字串
text - 圖示列中圖示/圖片右邊的字串
values - 各列的資料項, 不夠長度, 其他為空白, 太多長度會被忽略
item(iid[, option[, **kw]]) 設定返回專案的選項, 設定使用 kw, 返回使用 option, 都無則返回所有選項字典值
move(iid, parent, index) 移動專案 iid 到某一父項 parent 的某一個索引處
next(iid) 如果iid 專案不是最頂層專案, 返回其父項的下一個子項 iid, 無則返回空字串; 如果是最頂層專案, 則返回下一個最頂層專案的iid, 無則返回空字串
parent(iid) 返回父項的 iid, 如果已是最頂層專案, 則返回空字串
prev(iid) 如果iid 專案不是最頂層專案, 返回其父項的前一個子項iid, 無則返回空字串; 如果是最頂層專案, 則返回前一個最頂層專案的iid, 無則返回空字串
see(iid) 使專案 iid 可見, 其子項以全都展開
selection_add(items) 於選擇專案中, 新增單一或序列的專案
selection_remove(items) 於選擇專案中, 去掉單一或序列的專案
selection_set(items) 設定單一或序列的專案為選擇專案
selection_toggle(items) 變更單一或序列的專案的選擇狀態
set(iid, column=None, value=None) 設定或返回專案的列值, 只有 iid 引數時, 返回字典值
tag_bind(tagName, sequence=None, callback=None) 繫結標籤 tagName 的事件 sequence 到回撥函式 func; 只有前兩個引數, 則返回事件相關的函式; 只有第一個引數, 則返回所有相關函式的列表
tag_configure(tagName, option=None, **kw) 設定或查詢標籤的專案的選項, 設定使用 kw, 查詢使用 option, 如果兩者都無提供, 會返回選項的字典值; kw 選項有
'background' - 背景顏色
'font' - 文字字型
'foreground' - 前景顏色
'image' - 圖片
tag_has(tagName[, iid]) 返回標籤所包含的所有專案的列表, 如果另提供 iid 引數, 返回標籤中是否有 iid 專案
xview(*args) 供水平滾動條 scrollbar 選項 command 使用
yview(*args) 供垂直滾動條 scrollbar 選項 command 使用

ttk 樹檢視部件的虛擬事件

某些部件的狀態改變時, 會產生一個虛擬事件

事件 說明
"<<TreeviewSelect>>" 選擇內容改變
"<<TreeviewOpen>>" 專案被展開時
"<<TreeviewClose>>" 專案被收合時

待續

本作品採用《CC 協議》,轉載必須註明作者和本文連結
Jason Yang

相關文章