2011-05-12 63 views
0

我正在嘗試使用TreeCtrl來表示文件夾結構。對於每個文件夾,我需要知道它是絕對路徑和名稱。我目前正在做這樣的事情:wx.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」對象有沒有屬性「路徑」。從我在這裏理解的事件只會給我一個ID到樹中的一個項目,而不是從「childItem = self.tree.AppendItem(self.root,child.name)」導致的實際項目?如果是這種情況,我該如何才能到達該項目?

問候, 波格丹

回答

1

什麼。路徑屬性?這是你正在創建的東西還是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) 
+0

路徑是什麼我真的創造,感謝您的回答 – Bogdan 2011-05-16 06:35:05