2

wx.TreeCtrl以下の名前の追加されたツリーアイテムにデータを追加するにはどうすればよいですかfileTree。テキストファイルから配列にデータを読み込んで、ツリーを構築します。ツリーの追加項目は画像のファイル名ですが、各項目に完全なファイルパスを追加する方法を知りたいです。ファイル名だけでなく、アイテムを2倍にすると、完全なファイルパスが表示される必要があります。

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)

上記のコードでは、アイテム オブジェクトをfileInfoオブジェクトに関連付けました。イベント ハンドラーで関連オブジェクトにアクセスできます。

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

それで全部です。wx.TreeCtrl任意の Python オブジェクトをitemに関連付けることができることに注意してください。

于 2012-08-22T09:36:36.240 に答える