0

可以说我有这个treeCtrl:

Root

    Dogs
        Pug
        Lab

    Birds
        Parrot
        Eagle

如何获得哈巴狗项目的路径?

EX:我应该得到类似的东西,

["root","Dogs","Pug"]

(但使用 TreeCtrlIds)

有没有这样的功能,

getTreePath(Item)?

4

2 回答 2

2

您可以迭代调用GetItemParent(item)以从项目获取根节点,如下所示(来源:TreeCtrl api):

root = myTree.GetRootItem()
pathList = [item]
done = False
while not done:
    path = myTree.GetItemParent(item)
    pathList.append(path)
    if path==root:
        done=True

请注意,这将为您提供与您需要的顺序相反的项目,pathList.reverse()用于纠正此问题。

编辑:

  1. 正如@gddc 指出的那样pathList.append(path),您可以使用pathList.insert(0, path)来避免颠倒您的列表。
  2. 如果您只对路径名感兴趣,请仅附加每个项目的文本 usingGetItemText()而不是整个对象。
于 2012-07-12T17:22:31.133 回答
2

我也使用迭代方法,但从当前选定的项目开始。它看起来像这样:

pieces = []
item = self.tree.GetSelection()

while self.tree.GetItemParent(item):
  piece = self.tree.GetItemText(item)
  pieces.insert(0, piece)
  item = self.tree.GetItemParent(item)
于 2012-07-12T17:39:09.097 回答