2012-04-17 41 views
3

wx.TextCtrlとwx.lib.scrolledpanel.ScrolledPanelの両方を含む複数のwx.Panelsを含むフレームがあります。マウスがwx.Panelの上にあるとき(つまり、TextCtrlまたはパネルのいずれかにフォーカスがない場合)、スクロールパネルの任意のマウススクロールイベントをルーティングしたい - を使わずに、 。ルーティングフォーカスなしでwxPythonのScrolledPanelにスクロールイベントをルーティングする

たとえば、以前私が見つけた解決策は、ScrolledPanel上でマウスを動かしてフォーカスを合わせることでしたが、TextCtrlからフォーカスを外していました。

私はwx.PanelにEVT_MOUSEWHEELを結合しようとしましたが、私はevent.GetWheelDelta()またはevent.GetWheelRotation()

アイデアのいずれかをつかむときには、何もするが表示されませんか?

答えて

0

スクロールウィンドウフォーカスイベントのバインドを解除するのは機能しますか?各wx.Panelで

self.scrollwin.Unbind(wx.EVT_SET_FOCUS) 
    self.scrollwin.Unbind(wx.EVT_KILL_FOCUS) 
1

そのScrolledPanel上のあなたはそれの上にマウスの動きがあるときScrolledPanelにフォーカスを設定するイベントをバインドする必要があります。

class ListItem(wx.Panel): 
    def __init__(self, parent): 
     super(ListItem, self).__init__(parent) 

     self.Bind(wx.EVT_MOTION, self.OnMouseMotion) 

     #Add all your other objects to this panel as normal 

    def OnMouseMotion(self, event): 
     panel = event.GetEventObject().GetParent()   
     panel.SetFocus() 

あなたのスクロールパネルにリストされた各パネル用のクラスを作成していない場合にも、インラインそれを行うことができます。

関連する問題