2009-08-13 10 views
0

Ich versuche herauszufinden, wie ich festlegen kann, dass das mouse_down-Ereignis in wxPython (StyledTextCtrl) zuerst vom integrierten Ereignis-Listener verarbeitet wird, der die Caret-Position ändert. und dann von meinem eigenen Event-Handler bearbeitet.wxPython - Ausführen von eingebautem Ereignis vor dem benutzerdefinierten gebundenen Ereignis

den benutzerdefinierten Ereignishandler I wx.EVT_LEFT_DOWN (self.styCtrl, self.OnMouseClick)

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

ich die in Event-Handler gebaut will verwenden binden Feuer und vollständig vor foo().

Antwort

2

Egal, ich habe eine Lösung gefunden. Wenn jemand eine elegantere Lösung hat, wäre es willkommen. Meine Lösung verwendet die wx.CallAfter() Ansatz:

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() 

diese Weise unabhängig von der Basissteuer tut auf das Ereignis eintritt, und dann wird die Nachrichtenwarteschlange die tatsächliche OnMouseClick Ereignis auszuführen. So passiert foo() nach der internen Ereignisbehandlung von ctrl

Verwandte Themen