代码之家  ›  专栏  ›  技术社区  ›  jhaukur

wxpython-在自定义绑定事件之前运行内置事件

  •  0
  • jhaukur  · 技术社区  · 17 年前

    我正在尝试找出如何指定wxpython(styledtextctrl)中的mouse-down事件首先由内置事件侦听器处理,后者更改插入符号位置,然后由我自己的自定义事件处理程序处理。

    绑定我使用的自定义事件处理程序 wx.evt_左下(self.styctrl,self.onmouseclick)

    def OnMouseClick(self, evt):
        evt.Skip()
        foo()
    

    我希望内置事件处理程序在foo()之前启动并完成。

    1 回复  |  直到 15 年前
        1
  •  2
  •   jhaukur    16 年前

    没关系,我已经想出了解决办法。如果有人有更优雅的解决方案,那将是受欢迎的。 我的解决方案使用wx.callAfter()方法:

    def BindEvents(self):
    
        self.ctrl.Bind(wx.EVT_LEFT_DOWN, self.OnMouseClickDelay)
    
    def OnMouseClickDelay(self, evt):
        wx.CallAfter(self.OnMouseClick, evt)
        evt.Skip()
    
    def OnMouseClick(self, evt):
        foo()
    

    这样,无论基控件对事件执行什么操作,消息队列都将执行实际的OnMouseClick事件。所以foo()发生在ctrl的内部事件处理之后

    推荐文章