【问题标题】:When to use event.Skip() in wxPython event handlers?何时在 wxPython 事件处理程序中使用 event.Skip()?
【发布时间】:2016-05-11 00:41:36
【问题描述】:

在 wxPython 中,您经常会在事件处理程序中看到,在执行完操作后,会调用 event.Skip(),在我的理解中,这会阻止事件处理在此时停止,而是让它传播到下一个事件处理程序,如果有的话是什么。

def onButton(event):
    # Doing stuff after button is clicked
    event.Skip()

我不明白的是:(总是)有必要打电话给event.Skip()吗?还是仅在特定情况下?或者这样做或多或少是一种好习惯?

【问题讨论】:

    标签: python events wxpython wxwidgets


    【解决方案1】:

    可以说,这完全是关于事件传播(但仅适用于 wx.CommandEvents,因为只有它们传播),所以除非您有特定需要调用 event.Skip(),否则您当然不应该调用它.这样做只是意味着您执行的代码超出了您的需要。
    http://wiki.wxpython.org/EventPropagation

    【讨论】:

    • 在绑定到wx.EVT_CLOSE 时,您必须在处理程序中执行event.Skip() 的一种情况。如果你不这样做,框架的关闭/破坏将永远不会发生/不会正确发生。
    • @nepix32 如果你使用destroy()则不是
    【解决方案2】:

    是否(总是)需要调用 event.Skip()?

    这绝对不是必须的。 documentation 很好地解释了 event.Skip()。致电event.Skip() 与好的或坏的做法无关。它是关于事件处理机制的。

    大多数时候,人们不需要event.Skip()。 YMMV。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2021-11-15
      相关资源
      最近更新 更多