2012-08-22 2 views
2

Comment puis-je ajouter des données supplémentaires aux éléments de l'arborescence ajoutés dans le wx.TreeCtrl nommé fileTree ci-dessous. Je lis les données d'un fichier texte dans un tableau pour construire l'arbre. Les éléments d'ajout dans l'arborescence sont les noms de fichiers des images mais j'aimerais savoir comment ajouter le chemin de fichier complet à chaque élément. Le chemin de fichier complet doit apparaître lorsque je double sur un élément au lieu de simplement son nom de fichier.Comment ajouter des données supplémentaires aux éléments 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 merci pour le montage, des idées? – user1401950

Répondre

3

Sous wx.TreeCtrl, vous pouvez associer des éléments à certaines données. Cette donnée est une instance de classe wx.TreeItemData pouvant contenir un objet Python arbitraire. Clarifions qu'avec un code:

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

Cette instance fileInfo d'objet wx.TreeItemData peut-il être associé à un objet arbitraire wx.TreeCtrl:

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

Ici, dans le code ci-dessus, nous avons associé l'objet élément avec fileInfo objet. Vous pouvez accéder à l'objet associé dans votre gestionnaire d'événements:

C'est tout. Notez que tout objet Python peut être associé à l'élément wx.TreeCtrl.

+0

merci, comment puis-je obtenir le texte de l'objet lors de l'utilisation self.fileTree.GetPyData (event.GetItem()) ,? – user1401950

+0

Cela a fonctionné - >> currentImg = self.fileTree.GetPyData (event.GetItem()) imprimer currentImg.GetData() – user1401950

Questions connexes