假设我有这个树Ctrl:
Root
Dogs
Pug
Lab
Birds
Parrot
Eagle
如何获取pug项目的路径?
我应该买点之类的
["root","Dogs","Pug"]
(但使用TreeCtrlIds)
有没有像这样的功能
getTreePath(Item)
?
我也使用迭代方法,但从当前选择的项开始。它看起来像这样:
pieces = []
item = self.tree.GetSelection()
while self.tree.GetItemParent(item):
piece = self.tree.GetItemText(item)
pieces.insert(0, piece)
item = self.tree.GetItemParent(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()
进行更正。
编辑:
- 正如@g.d.d.c所指出的,可以使用
pathList.insert(0, path)
来避免颠倒列表,而不是pathList.append(path)
- 如果您只对路径名称感兴趣,请使用
GetItemText()
而不是整个对象仅附加每个项目的文本