我正在努力解决 ZetCode 给出的 Bind() 参数的描述:http: //zetcode.com/wxpython/events as
Bind(event, handler, source=None, id=wx.ID_ANY, id2=wx.ID_ANY)
当然,前两个是不言自明的。但是在这种情况下什么是“来源”?ID?
关于后者,我当然知道 GetId() 方法。但它适用于控件创建期间设置的 id,而不是绑定,对吗?
我怀疑您已经使用了它,而没有意识到它是什么。
例如,这些是等效的:
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
self.timer = wx.Timer(self)
self.Bind(wx.EVT_TIMER, self.OnTimer, source=self.timer)
self.timer = wx.Timer(self,42)
self.Bind(wx.EVT_TIMER, self.OnTimer, id=42)
self.timer = wx.Timer(self,wx.NewId())
self.Bind(wx.EVT_TIMER, self.OnTimer, id=self.timer.GetId())
在id=wx.ID_ANY, id2=wx.ID_ANY
简单地允许你指定一个范围内的ID,在这里你将负责检查ID,当事件发生的。
例如,我使用此代码就是出于这样的原因。
self.Bind(wx.EVT_MENU, self.OnAutoTimeStamp, id=TIMESTAMP_OFF,id2=TIMESTAMP_COMMENT)
在哪里:
TIMESTAMP_OFF = wx.NewId()
TIMESTAMP_STD = wx.NewId()
TIMESTAMP_BOOKMARK = wx.NewId()
TIMESTAMP_COMMENT = wx.NewId()
请注意,它们可以很容易地是 1,2,3 和 4
在这种情况下,上面的将是
self.Bind(wx.EVT_MENU, self.OnAutoTimeStamp, id=1,id2=4)
和:
def OnAutoTimeStamp(self,event):
if self.autom.IsChecked(TIMESTAMP_OFF):
self.auto_ts = ""
elif self.autom.IsChecked(TIMESTAMP_STD):
self.auto_ts = "S"
elif self.autom.IsChecked(TIMESTAMP_BOOKMARK):
self.auto_ts = "B"
elif self.autom.IsChecked(TIMESTAMP_COMMENT):
self.auto_ts = "A"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句