实现代码,
import wx
class Frame(wx.Frame):
def __init__(self, prnt):
wx.Frame.__init__(self, id=wx.ID_ANY, name='Frame', parent=prnt,
pos=wx.Point(280, 247), size=wx.Size(900, 500),
style=wx.DEFAULT_FRAME_STYLE, title='Example')
self.SetClientSize(wx.Size(900, 500))
self.SetMinSize(wx.Size(600, 400))
self.Bind(wx.EVT_KEY_UP, self.OnFrameKeyUp)
self.treebook = wx.Treebook(self, wx.ID_ANY,
style=wx.BK_DEFAULT)
self.treebook.Bind(wx.EVT_TREEBOOK_NODE_EXPANDED,
self.OnTreebook)
self.treebook.Bind(wx.EVT_TREEBOOK_NODE_COLLAPSED,
self.OnTreebook)
tc = self.treebook.GetTreeCtrl()
tc.SetWindowStyle(tc.GetWindowStyle()|wx.TR_EDIT_LABELS)
tc.Bind(wx.EVT_LEFT_DCLICK, self.OnFrameLeftDclick)
self.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.OnEndEdit)
# add some panels
panel1 = wx.Panel(self.treebook)
panel2 = wx.Panel(self.treebook)
panel3 = wx.Panel(self.treebook)
self.treebook.AddPage(panel1, 'First')
self.treebook.AddPage(panel2, 'Second')
self.treebook.AddSubPage(panel3, 'Subpanel')
self.SendSizeEvent()
def OnTreebook(self, event):
self.SendSizeEvent()
event.Skip()
def OnFrameKeyUp(self, event):
if event.GetKeyCode() == wx.WXK_DELETE:
self.treebook.DeletePage(self.treebook.GetSelection())
event.Skip()
def OnFrameLeftDclick(self, event):
tc = event.GetEventObject()
item, flags = tc.HitTest(event.GetPosition())
if item:
print item
tc.EditLabel(item)
event.Skip()
def OnEndEdit(self, event):
wx.CallAfter(self.SendSizeEvent)
event.Skip()
app = wx.PySimpleApp()
frame = Frame(None)
frame.Show()
app.MainLoop()