2012-08-22 57 views
2

如何向下面名爲fileTreewx.TreeCtrl中的附加樹項添加額外數據。我從一個文本文件讀取數據到一個數組來構建樹。樹中的附加項是圖像的文件名,但我想知道如何將完整的文件路徑添加到每個項目。完整的文件路徑必須顯示何時雙擊某個項目而不是其文件名。如何添加額外的數據到wx.TreeCtrl項目? wxpython

def __init__(self, *args, **kwds): 

    self.fileTree = wx.TreeCtrl(self, size=(200, 100)) 
    self.root = self.fileTree.AddRoot('Images') 
    self.allImages = self.fileTree.AppendItem(self.root, 'All') 
    imgLst=self.generateList(imagelist)# Reads a text file with filepaths into list 

    for item in imgLst: 
     tmp=item 
     tmp = tmp[tmp.rfind("\\")+1:tmp.rfind(".")] 
     self.fileTree.AppendItem(self.allImages, tmp) 

    self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.onTreeDClick, self.fileTree) 

def onTreeDClick(self,event): 
    print 'Double clicked on', self.fileTree.GetItemText(event.GetItem()) 

def generateList(self, fname): 
    f = open(fname, "rb") 

    a=[] 
    for line in f: 
     a.append(line.strip()) 
    return a 
+0

@Rostyslav Dzinko感謝編輯,任何想法? – user1401950

回答

3

wx.TreeCtrl之內,您可以將某些數據與其關聯。該數據是一個wx.TreeItemData類實例,可以包含任意的Python對象。讓我們澄清,用代碼:

# Let fullPath be holding full path you your file (i.e. in Python string) 
fileInfo = wx.TreeItemData(fullPath) 

fileInfowx.TreeItemData對象的實例可以與任意wx.TreeCtrl項目有關:

# Let item variable contain your tree item object 
self.fileTree.SetPyData(item, fileInfo) 

在這裏,在上面的代碼中我們相關的項目目標與fileInfo目的。您可以訪問事件處理程序中的關聯對象:

self.fileTree.GetPyData(event.GetItem()) 

就是這樣。請注意,任何Python對象都可以與wx.TreeCtrl項目關聯。

+0

謝謝,當我使用self.fileTree.GetPyData(event.GetItem())時,如何獲得對象的文本? – user1401950

+0

這工作 - >> currentImg = self.fileTree.GetPyData(event.GetItem()) print currentImg.GetData() – user1401950

相關問題