Skip to main content
 首页 » 编程设计

python之wxPython之如何在传入 -1 时获取小部件的 ID

2025年05月04日15虾米哥

我今天做了一些 wxPython 工作,我得到了这段代码(我已经删除了不相关的部分):

        def CreateRowOne(self, pan): 
            hbox1 = wx.BoxSizer(wx.HORIZONTAL) 
            hbox1.Add(wx.Button(pan, -1, "250 Words"), 1, wx.EXPAND | wx.ALL) 
            hbox1.Add(wx.Button(pan, -1, "500 Words"), 1, wx.EXPAND | wx.ALL) 
            hbox1.Add(wx.Button(pan, -1, "750 Words"), 1, wx.EXPAND | wx.ALL) 
            return hbox1 

如何获取创建的按钮的 ID,以便我可以将它们绑定(bind)到处理程序?通常,我会这样做:

            button1 = wx.Button(...) 
            button2 = wx.Button(...) 
 
            ... 
 
            self.Bind(wx.EVT_BUTTON, self.Blah, button1.GetID()) 
            self.Bind(wx.EVT_BUTTON, self.Blah2, button2.GetID()) 

但我没有为任何按钮提供标识符。我是否必须手动分配 ID 号?

请您参考如下方法:

你可以通过control.GetID()获取id,但是你不需要获取id来绑定(bind),你可以这样做

self.btn.Bind(wx.EVT_BUTTON, self._onBtnClick) 

它是可取的(id 应该是实现细节)并且简短,例如在这个样本中

import wx 
 
app = wx.PySimpleApp() 
frame = wx.Frame(None) 
btn = wx.Button(frame, -1, "anurag") 
btn.Bind(wx.EVT_BUTTON, lambda e:wx.MessageBox("Wow it works")) 
frame.Show() 
app.SetTopWindow(frame) 
app.MainLoop()