2012-07-12 28 views
0

路径项可以说我有这个TREECTRL:获取上TREECTRL

Root 

    Dogs 
     Pug 
     Lab 

    Birds 
     Parrot 
     Eagle 

我怎样才能得到一个路径哈巴狗项目?

EX:我应该得到的东西一样,

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

(但使用TreeCtrlIds)

是否有一个功能类似,

getTreePath(Item)

回答

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) 
+0

我希望不要这样做,但它很好。谢谢 – user1513192 2012-07-12 17:57:41

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. 作为@ g.d.d.c指出,而不是pathList.append(path),您可以使用pathList.insert(0, path)避免倒车列表。
  2. 如果您只对路径名称感兴趣,请仅使用GetItemText()而不是整个对象附加每个项目的文本。
+0

如果您使用'pathList.insert(0,path)',则可以避免需要反转路径列表。否则,这是一个合理的方法。 – 2012-07-12 17:37:16

+0

谢谢,补充说,在 – Dhara 2012-07-12 17:40:04