事件与按钮绑定未生效,注意作用域

举例:

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) 

posted @ 2023-03-16 16:42  No九五二七9527  阅读(127)  评论(0)    收藏  举报