2010-12-01 8 views
1

こんにちはすべて すべてのパネルにマウスイベントをバインドする方法を探しています。基本的に私は多くのパネルの私のアプリにフォーカスを持っているパネルを見つけるためにwx.Window.FindFocus()を使用しています。問題は、wx.Window.FindFocus()をイベントハンドラに配置するために何かにwx.LEFT_DOWNイベントをバインドしたいということです。どのようなthoにバインドするには? self、panel1、panel2は明らかにそのパネルをクリックするとイベントを呼び出すだけで動作しません。どのパネルにフォーカスがあるか判断できるように、私はanypanelでクリックを捕まえるために何か必要ですか? plsヘルプ!wxpythonはマウスイベントをすべてのパネルにバインドしますか?

答えて

3

wx.Panelにフォーカスを受け入れることができる子ウィジェットがあれば、フォーカスを最初の子に設定します。つまり、明示的に設定しない限り、wx.Panelsは通常フォーカスを取得しません。

パネル上でクリックを捕捉する必要がある場合は、wx.EVT_LEFT_DOWNイベントをパネルにバインドします。

panelOne.Bind(wx.EVT_LEFT_DOWN、self.doSomething)

私はそれも必要だ場合は、あなたがクリックしたかを把握するためにHitTestを使用することができると思います。あなたはおそらくイベントハンドラで次のようなことをしているパネルを見つけることができます:

panel = event.GetEventObject() 
panel_id = panel.GetId() 
panel_name = panel.GetName() 

希望に役立ちます。

+0

こんにちは。私はpanelone、paneltwo、panelthreeをすべて私のメインのベースパネルに持っていると言う。私がベースパネルにバインドして、それがベースパネル自体のクリックだけをピックアップすると言うようにします。私は私がpanelone、paneltwo、panelthreeなどに個々にバインドしなければならないと思うので、それはクリックしても何もしないベースパネルの子です。任意のアイデア?ああ、それぞれの子パネルへのバインディングはオプションではありません。私は何とかそれをクリックしてパネルにアクセスする必要があります – James

+0

あなたは例を挙げることができますか? http://wiki.wxpython.org/MakingSampleApps –

+1

それは私の問題を解決しました@MikeDriscoll、ありがとう:-) –

関連する問題