Skip to main content
 首页 » 编程设计

python之wxPython: TreeCtrl: 如何通过名称获取树项

2025年05月04日17lautakyan007

我正在使用 wxPython 并得到了一棵包含一些项目的树。 现在我需要一个函数,它按名称给我树项对象。

例如: item = self.GetItemByName("我的故事")

我在文档中找不到这样的功能。

有没有人有什么想法?

请您参考如下方法:

这是查找具有特定标签的第一个树项的一种方法:

def get_item_by_label(self, tree, search_text, root_item): 
    item, cookie = tree.GetFirstChild(root_item) 
 
    while item.IsOk(): 
        text = tree.GetItemText(item) 
        if text.lower() == search_text.lower(): 
            return item 
        if tree.ItemHasChildren(item): 
            match = self.get_item_by_label(tree, search_text, item) 
            if match.IsOk(): 
                return match 
        item, cookie = tree.GetNextChild(root_item, cookie) 
 
    return wx.TreeItemId() 
 
result = get_item_by_label(tree, 'MyStories', tree.GetRootItem()) 
if result.IsOk(): 
    print('We have a match!') 

但是根据您在树中显示的内容,可能有更简单的方法来处理它。 TreeCtrl 已经提供了在您填充树时在树项和其他对象之间创建引用的工具,而且字典查找比我刚刚键入的内容更快、更清晰。