Wxpython:TreeCtrl:迭代

2024-09-29 22:13:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下方法迭代wxpythontreectrl的所有节点。在

 def get_desired_parent(self, name, selectednode = None):
    if selectednode == None:
        selectednode = self.treeCtrl.RootItem
    # First perform the action on the first object separately
    childcount = self.treeCtrl.GetChildrenCount(selectednode, False)
    if childcount == 0:
        return None

    (item,cookie) = self.treeCtrl.GetFirstChild(selectednode)
    if self.treeCtrl.GetItemText(item) == name:
        return item

    while childcount > 1:
        childcount = childcount - 1
     # Then iterate over the rest of objects
        (item,cookie) = self.treeCtrl.GetNextChild(item,cookie)
        if self.treeCtrl.GetItemText(item) == name:
            return item
    return None

当我递归地在结构内部迭代时,这个多余代码的问题变得更加明显。 是否有另一种方法可以以更紧凑的方式执行相同的操作,从而使我的代码更加简洁。在


Tags: the方法代码nameselfnonereturnif
1条回答
网友
1楼 · 发布于 2024-09-29 22:13:05

您可以使用此函数内部的函数(仅在其命名空间中),该函数将检查它是否与条件匹配。如果不返回,则继续。在

否则,您可以在while行之后检查您的条件。这样,item变量将由循环之前的第一个子变量定义,并像其他子变量一样进行计算。在

另一种方式:(或两者的混合)

(child, cookie) = self.GetFirstChild(item)
while child.IsOk():
    do_something(child)
     (child, cookie) = self.GetNextChild(item, cookie)

相关问题 更多 >

    热门问题