2

如何将额外数据添加到下面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
4

1 回答 1

3

在您的内部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 对象与fileInfoobject 关联起来。您可以访问事件处理程序中的关联对象:

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

就这样。请注意,任何 Python 对象都可以与wx.TreeCtrlitem 关联。

于 2012-08-22T09:36:36.240 回答