可以说我有这个treeCtrl:
Root
Dogs
Pug
Lab
Birds
Parrot
Eagle
如何获得哈巴狗项目的路径?
EX:我应该得到类似的东西,
["root","Dogs","Pug"]
(但使用 TreeCtrlIds)
有没有这样的功能,
getTreePath(Item)
?
您可以迭代调用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()
用于纠正此问题。
编辑:
pathList.append(path)
,您可以使用pathList.insert(0, path)
来避免颠倒您的列表。GetItemText()
而不是整个对象。我也使用迭代方法,但从当前选定的项目开始。它看起来像这样:
pieces = []
item = self.tree.GetSelection()
while self.tree.GetItemParent(item):
piece = self.tree.GetItemText(item)
pieces.insert(0, piece)
item = self.tree.GetItemParent(item)