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

时间:2009-08-13 11:12:47

标签: events event-handling wxpython

我试图找出如何指定wxPython(StyledTextCtrl)中的mouse_down事件首先由内置事件侦听器处理,它会更改插入位置,然后由我自己的自定义事件处理程序处理。 / p>

绑定我使用的自定义事件处理程序 wx.EVT_LEFT_DOWN(self.styCtrl,self.OnMouseClick)

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

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

1 个答案:

答案 0 :(得分:2)

没关系,我已经找到了解决方案。如果有人有一个更优雅的解决方案,那将是受欢迎的。 我的解决方案使用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

的内部事件处理之后