Ich habe eine Frage über TreeCtrl
Ich habe eine Tree wie z.B
a
...b
...c
ich möchte jetzt die absolute Path von Item bekommen, wie z.B wenn ich die item C auswähle, dann werde ich eine String wie '/a/b/c' bekommen, änhlich wie Linux Befehl 'Pwd',
hier ist meine Code:
Code: Alles auswählen
import wx
class TestFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title="simple tree", size=(400,500))
# Create the tree
self.tree = wx.TreeCtrl(self)
# Add a root node
root = self.tree.AddRoot("a")
b = self.tree.AppendItem(root, 'b')
self.tree.AppendItem(b, 'c')
# Bind some interesting events
self.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.OnItemExpanded, self.tree)
self.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.OnItemCollapsed, self.tree)
self.Bind(wx.EVT_TREE_SEL_CHANGED, self.OnSelChanged, self.tree)
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.OnActivated, self.tree)
# Expand the first level
self.tree.Expand(root)
def AddTreeNodes(self, parentItem, items):
pass
def GetItemText(self, item):
if item:
return self.tree.GetItemText(item)
else:
return ""
def OnItemExpanded(self, evt):
print "OnItemExpanded: ", self.GetItemText(evt.GetItem())
def OnItemCollapsed(self, evt):
print "OnItemCollapsed:", self.GetItemText(evt.GetItem())
def OnSelChanged(self, evt):
print "OnSelChanged: ", self.GetItemText(evt.GetItem())
bb = evt.GetItem()
print self.GetName(bb)
def OnActivated(self, evt):
print "OnActivated: ", self.GetItemText(evt.GetItem())
def GetName(self,item):
result=[]
a = self.tree.GetItemParent(item)
b = self.GetItemText(a)
result.append(b)
if b!='':
sub = self.GetName(a)
if sub!=[]:
result.append(sub)
return result
app = wx.PySimpleApp(redirect=True)
frame = TestFrame()
frame.Show()
app.MainLoop()
- [u'b', [u'a', ['']]]
Also ich denke das ist aber sehr umständlich, habt ihr vieleicht eine besser Methode?
Grüßen