ttk.Treeview


TTK的目的。

TreeView控件的呈現層次結構,用戶可以使用鼠標動作來顯示或隱藏結構的任何部分。

與術語“樹”的關聯是由於編程實踐:樹結構是一個常見的程序設計。嚴格地說,在一個TreeView控件顯示的層次結構是一個森林:沒有一個根,只是一個收集的頂級節點,每個可能包含二級節點,每個節點可以包含第三級,等等。

您可能已經遇到了這個特定的演示文稿作為瀏覽目錄或文件夾層次結構的一種方式。整個層次結構顯示像一個鋸齒狀的輪廓,其中每個目錄是一個單獨的行,並顯示每個目錄的子目錄下面,縮進:

用戶可以點擊一個目錄的圖標崩潰(關閉)它,隱藏在它的所有項目。他們也可以再次點擊圖標來展開(打開)它,以便目錄或文件夾中的項目被顯示出來。

的TreeView控件的推廣這個概念,你可以用它來顯示任何層次結構,和讀者可以折疊或展開這一結構子樹與鼠標。

首先,一些定義:

item

正在顯示的部件中的一個實體。對於一個文件瀏覽器,一個項目可能是一個目錄或一個文件。

每個項目都與文本標簽相關聯的,也可以與圖像相關聯的。

IID

在樹的每一個項目都有一個唯一的標識符字符串稱為IID。你們能提供的IID值你自己,或者你可以讓這些生成。

child

在層次結構中的一個給定項目下的項目。例如,一個目錄,,可能有兩種孩子:文件和子目錄。

parent

對於一個給定的項目,如果它是在層次結構的頂部,它被稱為沒有父;如果它不是在頂層,父是包含它的項目。

ancestor

一個項目的祖先包括它的父母,它的父母的父母,所以在樹的最高水平。

visible        

頂層項目總是可見的。否則,只有當所有的祖先都被擴展時,一個項目是可見的。

descendant

一個項目的后代包括它的孩子,它的孩子的孩子,等等。另一種說法是,一個項目的子樹包含所有它的后代。

tag

您的程序可以將一個或多個標記字符串與每個項目關聯。您可以使用這些標簽來控制項目的外觀。例如,你可以使用標簽的“D”和“F”文件的標簽標簽的目錄,然后指定物品的標簽“D”用黑體字體。

您也可以將事件與標簽關聯,以便某些事件將導致某些處理程序被調用具有該標記的所有項目。例如,您可以設置一個文件瀏覽器,以便當用戶點擊一個目錄時,瀏覽器更新其內容以反映當前的文件結構。

你的TreeView控件的結構將與多個列。我們將稱為“圖標”列的第一列,顯示折疊或展開項目的圖標。在剩下的欄目中,你可以展示你喜歡的任何信息。

例如,一個簡單的文件瀏覽器組件可能使用兩個列,在第一列中的目錄圖標和第二列中的目錄或文件名。或者您可能希望顯示其他列的文件大小、權限和其他相關數據。

在TreeView控件的操作,甚至允許你使用它作為一個樹編輯。你的程序可以刪除整個子樹從它的位置在主樹,然后將它之后在一個完全不同的角度。

這里是設置TreeView控件的一般程序。

1。創建TTK TreeView的構造函數的部件。使用列關鍵字參數來指定要顯示的列數,並為每個列分配符號名。

2。使用。column()和。heading()方法設置列標題(如果你想)和配置列屬性如大小和拉伸性。

三.從頂層的條目,使用方法。insert()填充樹。每個對該方法的調用將一個項目添加到樹中。使用此方法的打開關鍵字參數來指定項目是否最初是擴展或折疊的。

如果你想為這個項目提供的ID值,使用IID關鍵字參數。如果省略此參數,將使一個TTK並返回它的結果。insert()方法調用。

使用此方法的值關鍵字參數指定在該項目的每個列中應出現的什么時,它是可見的。

在一個給定的父控件創建一個TreeView控件:

w = ttk.Treeview(parent, option=value, ...)

構造函數返回新的TreeView控件。它的選項包括:

class_

當您創建這個小部件時,您可以提供一個小部件的名稱。此名稱可用於自定義小部件的外觀;請參見第27節“標准外觀”。一旦創建了小部件,則無法更改小部件的名稱。

columns

列標識符字符串的序列。這些字符串在內部使用,以確定控件中的列。圖標欄,其標識符總是“# 0”,包含折疊/展開的圖標總是第一列。

您指定的列參數的列除了圖標列之外。

例如,如果你指定的列=('name','大小'),三列將出現在窗口的圖標:第一列,然后兩柱內部標識符的名稱和大小。

cursor

使用該選項指定鼠標光標的外觀,當它在窗口;參見5.8節,“光標”。指定的默認值(一個空字符串)指定從父控件繼承的光標。

displaycolumns

選擇實際上顯示的列,並確定它們的演示文稿的順序。價值觀可能:

•”#所有選擇所有列的列參數定義的順序顯示。

A列數(整數的位置,從0計數)或列標識符從列參數列表。

例如,假設你指定列=('name','大小','日')。這意味着每個電話。insert()方法需要一個參數值=(名稱、大小、日期)提供的值將被顯示。讓我們將此序列稱為“邏輯列”序列。

進一步假設你指定列=構造函數(2,0)。物理列的順序,將實際出現在小部件中的列,將是三:圖標列將是第一個,然后是數據列(邏輯列序列中的索引2),然后是“名稱”列(邏輯列索引0)。大小列將不會出現。

你可以通過指定列的標識符,而不是邏輯列位置得到同樣的效果:柱=('date ','名')。

height

使用此參數可以將額外的空間放在小部件內部的內容周圍。您可以提供一個單一的維度或一個高達四個維度的序列,根據本表解釋:

Values given 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 a b c d

 selectmode

此選項可以控制用戶允許使用鼠標選擇什么。可以值:

selectmode='browse'                                                   The user may select only one item at a time.                        
selectmode='extended'                                                   The user may select multiple items at once.                        
selectmode='none'                        

                          The user cannot select items with the mouse.

 show

抑制標簽在每一列的頂部,指定顯示=‘樹’。默認是顯示列標簽。

style

使用此選項可以指定一個自定義控件樣式名稱;參見47節,“定制和創建TTK的主題和風格”。

takefocus

使用這個選項來指定一個小部件是否被訪問在焦點遍歷;見第53節,“焦點:路由鍵盤輸入”。指定takefocus =真正的如果你想去接受焦點;指定takefocus =如果控件不接受焦點錯誤。默認值為空字符串;默認情況下,控件獲得焦點的控件做的TTK。

這里有一個TreeView控件的使用方法。

.bbox(item,column=None)

該項目的項目,如果該項目是目前可見的,此方法返回一個元組(X,Y,W,H),其中(x,y)是該項目的左上角的坐標相對於控件,和W和H是該項目的寬度和像素高度。如果該項目是不可見的,該方法返回一個空字符串。

如果省略了可選的列參數,則將得到整個行的包圍盒。要得到項目行的一個特定列的包圍框,使用列= C,其中C是列的整數索引或它的列標識符。

.column(cid, option=None, **kw)        

該方法配置指定的CID的邏輯列的外觀,它可以是一個列的索引或列標識。配置圖標欄,使用CID值“0”#。

在TreeView控件的每個列都有其選擇自己從這個表:

anchor                                       The anchor that                    specifies where to position the content of the                    column.  The default value is 'w'.                  
id                                       The column name.  This option is read-only and                    set when the constructor is called.                  
minwidth                                       Minimum width of the column in pixels; the default                    value is 20.                  
stretch                                       If this option is True, the                    column's width will be adjusted when the widget is                    resized.  The default setting is 1.                  
width                                       Initial width of the column in pixels; the default                    is 200.

 如果提供了沒有選項值或任何其他關鍵字參數,則該方法將返回指定列的列選項的字典。

•審問的一個選項,命名為x的當前值,使用一個參數選項= x。

•設置一個或多個列的選項,你可以通過關鍵字參數使用上面顯示的選項名稱如錨= tk.center中心欄目內容。

.delete(*items)        

參數是IID值。在有匹配的IID值部件的所有項目都被摧毀了,連同他們的后代。

.detach(*items)

參數是IID值。在有匹配的IID值的控件的所有物品都是從可見的部件拆下,連同他們的后代。

項目沒有被銷毀。你可以將它們用可見樹move()下面描述的方法。

.exists(iid)        

返回true,如果存在一個項目中的控件與給定的IID,否則。如果一個項目不可見因為它被刪除的。detach()方法,它仍然被認為是為這個目的而存在。exists()方法。

.focus([iid])        

如果你不為這個方法提供了一種說法,你回來或者物品的IID當前具有焦點,或“如果沒有項目有焦點。

你可以通過其IID作為參數傳遞給這個方法一個項目給予重點。

.get_children([item])        

返回一個元組的兒童項目的項目參數指定的ID值。如果省略該參數,你會得到一個元組包含頂級項目的IID值。

。標題(CID,選項=無,××千瓦)

使用此方法可以配置在指定的CID柱部件的頂部顯示的列標題,可以是一個列的索引或列標識。使用CID參數值“0”#配置標題在圖標欄。

每個標題都有自己的一套選項,這些名稱和值:

anchor                                       An anchor that specifies how the heading is                    aligned within the column; see Section 5.5, “Anchors”.  The default value is tk.W.                  
command                                       A procedure to be called when the user clicks on                    this column heading.                  
image                                       To present a graphic in the column heading (either                    with or instead of a text heading), set this                    option to an image, as specified in Section 5.9, “Images”.                  
text                                       The text that you want to appear in the column                    heading.

 如果您提供沒有關鍵字參數,該方法將返回一個顯示列標題選項當前設置的字典。

•審問一些標題選項當前x的值,使用表格選項= x參數;該方法將返回該選項的當前值。

•可以設置一個或多個標題的選項提供給他們作為關鍵字參數如“anchor=tk.CENTER”.

.identify_column(x)        

給定一個X坐標,此方法返回一個字符串的形式# N標識包含x坐標列。

假設顯示圖標列,n的值為圖標列的0;第二個物理列的2;第三個物理列的1;等等。記得,物理列數可能不同於邏輯列數的情況下,你將使用displaycolumns TreeView構造函數參數。

如果不顯示圖標列,則N的值為第一個物理列的2,第二個物理列的1,等等。

.identify_element(xy)        

返回相對於小部件的位置(X,Y)的元素的名稱,或“如果沒有出現在該位置上的元素”。元素名稱在50節中討論,“TTK元層”。

.identify_region(x,           y))

由於給定一個點相對於小部件的坐標,該方法返回一個字符串,該字符串表示該控件的一部分包含了該點的內容。返回值可能包括:

'nothing'                                       The point is not within a functional part of the                    widget.                  
'heading'                                       The point is within one of the column headings.                  
'separator'                                       The point is located within the column headings                    row, but on the separator between columns.  Use                    the .identify_column() method to                    determine which column is located just to the                    left of this separator.                  
'tree'                                       The point is located within the icon column.                  
'cell'                                       The point is located within an item row but not                    within the icon column.

 .identify_row(y)        

如果坐標內的項目之一,此方法返回該項的IID。如果該垂直坐標不在項目中,該方法將返回一個空字符串。

.index(iid)        

此方法返回的項的索引與指定其母相對獨立,從零。

.set_children(item,          *newChildren)        

用這種方法來改變其IID是項項目子項的設置。新建的參數是一個字符串序列IID。任何當前兒童項目不新建刪除。

.insert(parent,           index, iid=None, **kw)        

該方法將新項添加到樹中,並返回該項的ID值。爭論:

parent                                       To insert a new top-level item, make this argument                    an empty string.  To insert a new item as a child                    of an existing item, make this argument the parent                    item's iid.                  
index                                       This argument specifies the position among this                    parent's children where you want the new item to                    be added.  For example, to insert the item as                    the new first child, use a value of zero; to                    insert it after the parent's first child, use a                    value of 1; and so on.  To add the new item as                    the last child of the parent, make this argument's                    value 'end'.                                      
iid                                       You may supply an iid for the item as a string                    value.  If you don't supply an iid, one will be                    generated automatically and returned by the                    method.

 您也可以為該方法指定多個項目選項作為關鍵字參數。

image                                       You may display an image just to the right of the                    icon for this item's row by providing an image=I                    argument, where I is an image as specified                    in Section 5.9, “Images”.                  
open                                       This option specifies whether this item will be                    open initially.  If you supply open=False, this item will be closed.  If                    you supply open=True, the item's                    children will be visible whenever the item itself                    is visible.  The default value is False.                  
tags                                       You may supply one or more tag strings to be                    associated with this item.  The value may be                    either a single string or a sequence of strings.                  
text                                       You may supply text to be displayed within the                    icon column of this item.  If given, this text                    will appear just to the right of the icon, and                    also to the right of the image if provided.                  
values                                       This argument supplies the data items to be                    displayed in each column of the item.  The values                    are supplied in logical column order.  If too few                    values are supplied, the remaining columns will be                    blank in this item; if too many values are                    supplied, the extras will be discarded.

 .item(iid[, option[, **kw]])        

用這種方法來設置或檢索選項指定IID項目內。參閱。insert()方法為項目選擇的名字。

沒有參數,它返回一個字典,它的鍵是選項名稱,相應的值是這些選項的設置。要檢索一個給定選項的值,將該選項的名稱傳遞給它的第二個參數。要設置一個或多個選項,將它們作為關鍵字參數傳遞給方法。

.move(iid, parent, index)        

將指定的值由IID位置索引父所指定的項目項下。家長和指標參數相同的參數的方法。index()。

.next(iid)        

如果指定IID的項目不是其父親的最后一個孩子,這個方法返回以下孩子的IID;如果是其父親的最后一個孩子,這個方法將返回一個空字符串。如果指定的項目是一個頂級項目,方法返回下一個頂級項目的IID,或空字符串,如果指定的項目是最后的頂級項目。

.parent(iid)        

如果指定IID的項目是一個頂級項目,此方法將返回一個空字符串;否則返回的IID,項母。

.prev(iid)        

如果指定IID的項目並不是其父母的第一個孩子,這個方法返回之前的孩子的IID;否則返回一個空字符串。如果指定的項目是一個頂級項目,此方法返回之前的頂級項目的IID,或空字符串,如果是第一個頂級項目。

.see(iid)        

這種方法確保指定的IID項目是可見的。關閉的任何一的祖先都是開放的。Widget是滾動,如果有必要,使項目出現。

.selection_add(items)

除了已選擇的任何項目外,還添加了指定的項目。參數可以是一個單一的IID或一個序列的系統。

.selection_remove(items)        

取消任何項目的指定參數,這可能是一個單一的IID或一個序列的系統。

.selection_set(items)        

只有指定的項將被選中;如果其他項目進行之前,他們會選擇。

.selection_toggle(items)        

參數可以是一個單一的IID或一個序列的系統。每個項目指定的參數,如果它被選中,取消它;如果它被選中,選擇它。

.set(iid, column=None,          value=None)        

使用此方法檢索或設置列值的項指定IID。用一個參數,方法返回一個字典:鍵是列標識符,而每個相關的值都是在相應的列中的文本。

有兩個參數,方法將從所選項目的列返回數據值,其列標識符為列參數。有了三個參數,指定的列的值將被設置為第三個參數。

.tag_bind(tagName,          sequence=None, callback=None)        

該方法將由回調參數所設定的標簽標簽名指定事件處理程序。序列和回調參數相同的序列和功能參數。()方法在26節中描述的,“通用部件的方法”。

.tag_configure(tagName,          option=None, **kw)        

這種方法可以詢問或設置影響所有的物品都有標簽,標簽名的外觀選項。標簽選項包括:

'background'                                       The background color.                  
'font'                                       The text font.                  
'foreground'                                       The foreground color.                  
'image'                                       An image to be                    displayed in items with the given tag.

 當調用一個參數時,它返回當前標記選項的字典。要返回一個特定選項x的值,使用X作為第二個參數。

設置一個或多個選項,使用關鍵字參數例如前景='red'

.tag_has(tagName[,           iid])        

用一個參數調用,該方法返回一個帶有標簽的標簽名的所有項目的IID值列表。如果你提供一個IID作為第二個參數,該方法返回true,如果有標簽的標簽名,IID的項目,否則為假。

.xview(*args)

這是用於連接水平滾動條滾動部件的常用方法。有關詳細信息,請參見第22.1節,“滾動條命令回調”。

.yview(*args)        

這是用於連接垂直滾動條滾動部件的常用方法。有關詳細信息,請參見第22.1節,“滾動條命令回調”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM