wxPython 两种事件绑定方式的区别 self.Bind and self.button.Bind

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wxPython 两种事件绑定方式的区别 self.Bind and self.button.Bind相关的知识,希望对你有一定的参考价值。


目录

  • ​​问题描述和解决方法​​
  • ​​参考​​

问题描述和解决方法

wxpython 有两种事件绑定方式:

#1.通过Frame的Bind 绑定组件的事件
self.Bind(wx.EVT_BUTTON,self.OnClick,self.btn1)
#2.组件自身绑定事件
self.btn1.Bind(wx.EVT_BUTTON,self.OnClick)

看起来这两种方法都要行,事实上大部分情况下,确实是差不多的,但还是有一些区别的。
我在对一个TextCtrl绑 EVT_SET_FOCUS时碰到问题了,开始我是用第一种方法绑定的,但并不能激活事件。试了很久才怀疑是不是这两种绑定有区别,换成第二种方式立马就激活了。

#这种方式并不会激活
self.Bind(wx.EVT_SET_FOCUS,self.OnFoucs,self.txt1)
#这种方式是可以激活
self.txt1.Bind(wx.EVT_SET_FOCUS,self.OnFocus)

找了一下官网,发现还真有区别,只有当 事件类型是 wx.CommandEvent的时候,两种方式等价,其它类型就不一定了。

参考

​https://wiki.wxpython.org/self.Bind%20vs.%20self.button.Bind​


以上是关于wxPython 两种事件绑定方式的区别 self.Bind and self.button.Bind的主要内容,如果未能解决你的问题,请参考以下文章

取消绑定 wxPython 中的默认按钮行为

JS面试题汇总

捕获 WxPython 样式文本控件的回车键

js如何清除所有绑定的事件?

js 函数定义的两种方式以及事件绑定(扫盲)

Jquery的普通事件和on的委托事件