在 wxPython 中,event.Skip() 和 event.Veto() 有什么区别?
In wxPython what is the difference between event.Skip() and event.Veto()?
我有一个带有以下事件的笔记本:
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
以下代码之间的区别是什么?
def OnPageChanging(self, event):
try:
if .....
do some actions...
event.Veto()
return
except:
pass
和
def OnPageChanging(self, event):
try:
if .....
do some actions...
event.Skip()
return
except:
pass
在本指南中:http://zetcode.com/wxpython/events/
它说:
Sometimes we need to stop processing an event. To do this, we call the
method Veto().
但这听起来和 Skip()
完全一样。
那么差异是什么?
Veto() 用于阻止处理事件,但 Skip() 允许传播事件和处理 "further" 事件。
有两种类型的事件。基本事件和命令事件。它们的传播方式不同。事件传播是事件从子部件到父部件和祖父部件等的进展。基本事件不传播。命令事件会传播。
此外,您可以将多个事件绑定到一个控件,默认情况下,事件处理程序中捕获的事件将停止传播。要继续传播或处理其他绑定事件,请调用 Skip() 方法。
我希望这个解释是清楚的。
我有一个带有以下事件的笔记本:
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.OnPageChanging)
以下代码之间的区别是什么?
def OnPageChanging(self, event):
try:
if .....
do some actions...
event.Veto()
return
except:
pass
和
def OnPageChanging(self, event):
try:
if .....
do some actions...
event.Skip()
return
except:
pass
在本指南中:http://zetcode.com/wxpython/events/ 它说:
Sometimes we need to stop processing an event. To do this, we call the method Veto().
但这听起来和 Skip()
完全一样。
那么差异是什么?
Veto() 用于阻止处理事件,但 Skip() 允许传播事件和处理 "further" 事件。
有两种类型的事件。基本事件和命令事件。它们的传播方式不同。事件传播是事件从子部件到父部件和祖父部件等的进展。基本事件不传播。命令事件会传播。
此外,您可以将多个事件绑定到一个控件,默认情况下,事件处理程序中捕获的事件将停止传播。要继续传播或处理其他绑定事件,请调用 Skip() 方法。
我希望这个解释是清楚的。