我今天做了一些 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()
关于python - wxPython - 如何在传入 -1 时获取小部件的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1879694/