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

问题描述 投票:2回答:2

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

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()的声音完全一样。

那么差异是什么?

python wxpython
2个回答
4
投票

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


0
投票

这里有更多关于wxNotifyEvent基类的文档:

https://docs.wxwidgets.org/3.0/classwx_notify_event.html

© www.soinside.com 2019 - 2024. All rights reserved.