2009-08-13 15 views
0

wxPython(StyledTextCtrl)のmouse_downイベントが、組み込みのイベントリスナーによって最初に処理され、キャレットの位置が変更されるように指定する方法を理解しようとしています。私自身のカスタムイベントハンドラで処理されます。 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の内部イベント処理後に発生します

関連する問題