在wxPython中,event.Skip()和event.Veto()有什么区别?

时间:2015-12-02 05:29:51

标签: python wxpython

我有一个带有以下事件的笔记本:

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/ 它说:

  

有时我们需要停止处理事件。要做到这一点,我们称之为   方法Veto()。

但听起来与Skip()完全一样。

那么什么是diffrance?

1 个答案:

答案 0 :(得分:4)

Veto()用于防止事件处理,但Skip()允许传播事件和处理“更多”事件。
有两种类型的事件。基本事件和命令事件。它们的传播不同。事件传播是从子窗口小部件到父窗口小部件和主要父窗口小部件等事件的进展。基本事件不会传播。命令事件确实传播 此外,您可以将多个事件绑定到控件,默认情况下,事件处理程序中捕获的事件会停止传播。要继续传播或处理其他绑定事件,请调用Skip()方法。 我希望这个解释清楚。