2009-08-13 3 views
0

Я пытаюсь выяснить, как я могу указать, что событие mouse_down в wxPython (StyledTextCtrl) обрабатывается встроенным прослушивателем событий, который изменяет положение каретки, а затем обрабатывается моим собственным обработчиком событий.wxPython - Запуск встроенного события перед настраиваемым связанным событием

Чтобы связать обработчик событий, я использую wx.EVT_LEFT_DOWN (self.styCtrl, self.OnMouseClick)

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

Я хочу встроенный обработчик событий, чтобы стрелять и полное до Foo().

ответ

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