wxpython treebook 实现在双击事件 double clicking

本文介绍如何在wxpython中实现TreeCtrl组件的双击事件处理,包括删除节点、导入数据和树形结构操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现代码,

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()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值