事件与按钮绑定未生效,注意作用域
举例:
wxpython中,TE_panel11类下面有一个self.notebook1;
现在创建了一个按钮self.ok_btn;
在进行绑定操作时,发现绑定self.notebook1.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn) 有效,
但是self.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn) 绑定无效。
在wxPython中,wx.EVT_BUTTON 是一个按钮事件(Button Event),它是用于与 wx.Button 控件关联的默认事件。因此,self.notebook1.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn) 可以将按钮事件绑定到一个 wx.Button 控件 (即self.ok_btn上)。
而当你把 wx.EVT_BUTTON 事件直接绑定到一个面板类实例(即 self)上时,这个事件实际上是无法被触发的,因为该类实例本身并没有与这个事件相关联的控件。而且,这种情况下绑定事件的目标 self.ok_btn 参数也是多余的。
这里就是事件与控件的作用域不匹配导致的。
两种解决办法:
1、改用另外一种绑定的写法;
self.ok_btn.Bind(wx.EVT_BUTTON, self.OnButtonClick)
2、绑定到控件和时间对应的作用域中;
self.notebook1.Bind(wx.EVT_BUTTON, self.OnButtonClick, self.ok_btn)

浙公网安备 33010602011771号