我试图找出如何指定wxPython(StyledTextCtrl)中的mouse_down事件首先由内置事件侦听器处理,它会更改插入位置,然后由我自己的自定义事件处理程序处理。 / p>
绑定我使用的自定义事件处理程序 wx.EVT_LEFT_DOWN(self.styCtrl,self.OnMouseClick)
def OnMouseClick(self, evt):
evt.Skip()
foo()
我希望内置事件处理程序在foo()之前触发并完成。
答案 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
的内部事件处理之后