[wxPython] event.Skip()的用法

wxPython笔记 - event.Skip()的用法

wxPyWiki上学wxPython时,看到event.Skip()有点不能理解,使用过后发现其特性对于理解wxPython的多事件触发过程有所帮助,便记录下来。

以下是基于事件绑定前做的demo的修改,主要结构是”Test”菜单中的两个按钮分别绑定了一个和两个事件,这两个事件都是在控制台里输出不同的东西。

import wx

class MyFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self,parent,title=title, size=(400,500))
        self.control = wx.TextCtrl(self, style = wx.TE_MULTILINE)
        self.CreateStatusBar()  #the status bar in the bottom

        menuBar = wx.MenuBar()
        testMenu = wx.Menu()
        menuOnce = testMenu.Append(wx.ID_ANY, "Once", "print something")
        menuTwice = testMenu.Append(wx.ID_ANY, "Twice", "print something and another thing")
        menuBar.Append(testMenu, "Test")

        self.Bind(wx.EVT_MENU, self.First, menuOnce)

        self.Bind(wx.EVT_MENU, self.First, menuTwice)
        self.Bind(wx.EVT_MENU, self.Second, menuTwice)

        self.SetMenuBar(menuBar)


        self.Show(True)

    def First(self, event):
        print "something"
    def Second(self, event):
        print "another thing"


app = wx.App(False)  #what does False mean?
frame = MyFrame(None, 'Small editor')
app.MainLoop()

如果直接这么运行,点击”twice”时,会发生只有Second()响应的情况,说明对菜单点击这个事件的处理只到Second()结束为止。因此,想要让First()和Second()都响应”twice”,那么需要在Second()中最后加上event.Skip()。

另外,根据这个demo也可以发现,绑定在同一个事件上的不同函数,其执行的顺序是从下往上,也就是后绑定的先运行。


  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值