2009-08-13 7 views
0

J'essaie de comprendre comment je peux spécifier que l'événement mouse_down de wxPython (StyledTextCtrl) est d'abord géré par l'écouteur d'événement intégré, qui modifie la position du curseur, et ensuite géré par mon propre gestionnaire d'événements personnalisés.wxPython - Exécution d'un événement construit avant l'événement lié personnalisé

Pour lier le gestionnaire d'événements personnalisé J'utilise wx.EVT_LEFT_DOWN (self.styCtrl, self.OnMouseClick)

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

Je veux que le construit gestionnaire d'événements à feu et complète avant foo().

Répondre

2

Peu importe, j'ai trouvé une solution. Si quelqu'un a une solution plus élégante, ce serait la bienvenue. Ma solution utilise le wx.CallAfter() approche:

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

De cette façon, quel que soit le contrôle de base fait l'événement se produit, et la file d'attente de messages exécutera l'événement OnMouseClick réelle. Donc, foo() se produit après la gestion des événements internes de ctrl