如何在下面的wx.TreeCtrl
名为fileTree
的附加树项中添加额外数据。我将数据从文本文件读入数组以构建树。树中的追加项是图像的文件名,但是我想知道如何将完整的文件路径添加到每个项。当我双击某项而不是仅其文件名时,必须显示完整的文件路径。
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
最佳答案
在wx.TreeCtrl
中,您可以使项目与某些数据相关联。此数据是一个wx.TreeItemData
类实例,可以包含任意Python对象。让我们用代码来澄清一下:
# Let fullPath be holding full path you your file (i.e. in Python string)
fileInfo = wx.TreeItemData(fullPath)
该
fileInfo
对象的wx.TreeItemData
实例可以与任意wx.TreeCtrl
项目相关联:# Let item variable contain your tree item object
self.fileTree.SetPyData(item, fileInfo)
在上面的代码中,我们已将item对象与
fileInfo
对象相关联。您可以在事件处理程序中访问关联的对象:self.fileTree.GetPyData(event.GetItem())
就这样。注意,任何Python对象都可以与
wx.TreeCtrl
项目关联。