首页 > 代码库 > ttk.Treeview

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 givenLeftTopRightBottom
aaaaa
a babab
a b cacbc
a b c dabcd

 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

ttk.Treeview