0

TreeCtrlを使用してフォルダー構造を表現しようとしています。フォルダごとに、絶対パスと名前を知る必要があります。私は現在次のようなことをしています:

self.root = self.tree.AddRoot(project.name)
self.tree.SetPyData(self.root, None)
self.root.path = root 

---- other code -----

childItem = self.tree.AppendItem(self.root, child.name)
childItem.path = self.root.path + "/" +  child.name

しかし、イベントでは、パス文字列を取得する必要があります。これまでのところ失敗する私のアプローチは次のとおりです。

self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, self.tree)

----- other code -------

def OnItemExpanded(self, evt):
    selected = evt.GetItem()
    print selected.path

これは次の理由で失敗します:AttributeError:'TreeItemId'オブジェクトに属性'path'がありません。ここで私が理解していることから、イベントはツリーからのアイテムへのIDのみを提供し、「childItem = self.tree.AppendItem(self.root、child.name)」から生じた実際のアイテムは提供しませんか?その場合、どうすればそのアイテムにたどり着くことができますか?

よろしく、ボグダン

4

1 に答える 1

1

.pathプロパティとは何ですか?これはあなたが作成しているものですか、それともTreeItemIdオブジェクトの実際のメンバーですか(これは「AppendItem」メソッドから返されるオブジェクトです)?ドキュメントが表示されません。

子アイテムに任意のデータを格納する場合は、SetPyData/GetPyDataメソッドを使用します。

childItem = self.tree.AppendItem(self.root, child.name)
self.tree.SetPyData(childItem, ["hi", "i" , "am", "a", "python", "object"])

次に、ハンドラーで:

def OnItemExpanded(self, event):
    item = event.GetItem()
    if item:
        pyObj = self.tree.GetPyData(item)
于 2011-05-12T16:10:26.737 に答える