控件:树和显示树

表示树的数据

TreeData

类TreeData是被用于表示树对象。每一个树节点,包括根节点,是一个NPSTreeData实例。每个节点可能有它自己的内容,父节点或子节点。

每个节点的内容不是在创建的时候设置,就是使用 .set_content 方法设置。

get_content() 返回该内容。

get_content_for_display() 是控件用于显示树,这些控件期望返回一个能够给用户显示内容的字符串。

new_child(content=…) 创建一个新的子节点

selectable 如果这个属性为真,则用户可以标记一个值为’selected’。这被MLTreeMultiSelect控件使用,并且默认值为True。

ignore_root 这个属性控制着是否向用户展示树的根节点。

expanded 这个属性控制着是否扩展树的分支,假设该节点有任何子节点。

sort 这个属性控制是否对树进行排序。

sort_function 如果树已排序,当树显示时,将使用此属性中命名的函数作为对树排序的键。

walk_tree(only_expanded=True, ignore_root=True, sort=None, sort_function=None) 遍历树。你可以覆盖标准sort和sort函数,并决定是否只遍历那些被标记为展开的树节点。

Trees

MLTree, MLTreeAction

这个类的 values 属性必须存储一个NPSTree实例。尽管如此,如果你希望覆盖类的 convertToTree 方法。这个方法应返回一个NPSTree实例。当 values 被赋值时,该函数自动被调用。

默认情况下,这个类使用 TreeLine 控件来显示树的每一行树。在派生类中,你可以通过改变类属性 _contained_widgets 来更改它。类属性 _contained_widget_height 定义了每个给定的控件显示多少行。

MLTreeAnnotated, MLTreeAnnotatedAction
在默认情况下,这个类使用 TreeLineAnnotated 控件来显示树的每一行。在派生类中,你可以通过改变类属性 _contained_widgets 来更改它。
MLTreeMultiSelect

New in version 2.0pre70

这个类允许你选择树的多个项。你可以通过设置NPSTreeData节点的 selectable 属性来选择用户能够选择的NPSTreeData节点。

方法 get_selected_objects(self, return_node=True,) 返回一个列出被选中节点的生成器对象。如果return_node时True,则产生实际节点本身,否则会产生 node.getContent() 的值。

New in Version 2.0pre71 如果属性 select_cascades 为True(可通过创建时传递参数 select_cascades 或者后续直接设置属性来设置),则选择节点将自动选择已选中节点下任何可选节点。默认设置为True。

所选节点的属性 selected 也被设置为True,因此,你可以遍历树来找到他们,如果你愿意的话。

用于显示每一行的控件是 TreeLineSelectable

MLTreeMultiSelectAnnotated

New in version 2.0pre71

MLTreeMultiSelect类的一个版本,是使用 TreeLineSelectableAnnotated 作为显示控件。

弃用的Tree类

NPSTreeData

不赞同使用的TreeData类。NPSTreedata类是用于表示tree对象。每一个树节点,包括根节点,是一个NPRSTreeData实例。每个节点会有自己的内容,父节点或子节点。

每个节点的内容不是在创建的时候设置,就是使用 .set_Content 方法设置。

.getContent 返回内容。

.getContentForDisplay 是控件用于显示树,这些控件期望返回一个能够给用户显示内容的字符串。你可能想重载该方法。

newChild(content=…) 创建一个子节点。

selectable (new in version 2.0pre70) 如果该属性为真用户可标价一个值为’selected’。这是被MLTreeMultiSelect控件使用,且默认值为True。

MultiLineTree, SelectOneTree, and MultiLineTree
这些控件以一种和无树版本非常相似的方式来工作,除非他们希望在.values属性中包含一个NPSTree。其他主要不同点是他们的.value属性不包括所选值的索引,不过所选值索引本身。然而,这些类是弃用的,支持使用更多改进的 MLTreeMLTreeAction 类。
MultiLineTreeNew, MultiLineTreeNewAction

提供这些类仅仅是为了与旧版本兼容。新类应该使用MLTree和相关类

这个类的 values 属性必须存储一个NPSTree实例。不管怎样,如果你想,你可以重载这个类的 convertToTree 方法。这个方法将返回一个NPSTree实例。当 values 被赋值时,该函数自动被调用。

默认情况下,这个类使用 TreeLineAnnotated 控件来显示树的每一行树。在派生类中,你可以通过改变类属性 _contained_widgets 来更改它。

MutlilineTreeNewAnnotated, MultilineTreeNewAnnotatedAction

提供这些类仅仅是为了与旧版本兼容。新类应该使用MLTree和相关类

默认情况下,这个类使用 TreeLineAnnotated 控件来显示树的每一行树。在派生类中,你可以通过改变类属性 _contained_widgets 来更改它。