让我说我有这个treeCtrl:
Root
Dogs
Pug
Lab
Birds
Parrot
Eagle
如何获得哈巴狗项目的路径?
EX:我应该得到类似的东西,
["root","Dogs","Pug"]
(但使用TreeCtrlIds)
是否有像
这样的功能 getTreePath(Item)
?
答案 0 :(得分: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()
进行更正。
编辑:
pathList.append(path)
而不是pathList.insert(0, path)
来避免反转您的列表。 GetItemText()
而不是整个对象附加每个项目的文本。答案 1 :(得分: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)