私がこの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)