1. 程式人生 > 其它 >wxPython 兩種事件繫結方式的區別 self.Bind and self.button.Bind

wxPython 兩種事件繫結方式的區別 self.Bind and self.button.Bind

技術標籤:PythonwxPython

目錄

問題描述和解決方法

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