Get absolut Pah in TreeCtrl
Verfasst: Donnerstag 13. November 2008, 10:02
Hallo,zusammen
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:
Bis jetzt kriege ich eine List
Also ich denke das ist aber sehr umständlich, habt ihr vieleicht eine besser Methode?
Grüßen
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