Python 获取树上项目的路径

Python 获取树上项目的路径,python,wxpython,wxwidgets,Python,Wxpython,Wxwidgets,假设我有这样一个树: Root Dogs Pug Lab Birds Parrot Eagle 我怎样才能找到哈巴狗项目的路径 我应该买一些像 ["root","Dogs","Pug"] (但使用treectrlid) 有这样的函数吗 getTreePath(Item)?您可以迭代调用GetItemParent(Item)以从项获取根节点,如下所示(源:): 注意:这将按所需的相反顺序提供项目,请使用path

假设我有这样一个树:

Root

    Dogs
        Pug
        Lab

    Birds
        Parrot
        Eagle
我怎样才能找到哈巴狗项目的路径

我应该买一些像

["root","Dogs","Pug"]
(但使用treectrlid)

有这样的函数吗


getTreePath(Item)

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

注意:这将按所需的相反顺序提供项目,请使用
pathList.reverse()
对此进行更正

编辑:

  • 正如@g.d.d.c所指出的,您可以使用
    pathList.insert(0,path)
    来避免颠倒列表,而不是
    pathList.append(path)
  • 如果您只对路径名感兴趣,请使用
    GetItemText()
    而不是整个对象仅附加每个项目的文本

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

    注意:这将按所需的相反顺序提供项目,请使用
    pathList.reverse()
    对此进行更正

    编辑:

  • 正如@g.d.d.c所指出的,您可以使用
    pathList.insert(0,path)
    来避免颠倒列表,而不是
    pathList.append(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)
    

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

    pieces = []
    item = self.tree.GetSelection()
    
    while self.tree.GetItemParent(item):
      piece = self.tree.GetItemText(item)
      pieces.insert(0, piece)
      item = self.tree.GetItemParent(item)
    

    如果使用
    pathList.insert(0,path)
    ,则无需反转路径列表。否则,这是一种合理的方法。如果使用
    pathList.insert(0,path)
    ,则无需反转路径列表。否则,这是一个合理的方法。