2016-05-05 13 views
0

パネルを追加すると左右の矢印キーが隠れてしまう理由を誰でも説明できますか?wxPythonパネルがキーダウンイベントをマスクするのはなぜですか?

import wx 
class AForm(wx.Frame): 
    def __init__(self): 
     wx.Frame.__init__(self, None, wx.ID_ANY, "Press Key") 
     panel = wx.Panel(self, wx.ID_ANY) 
     panel.Bind(wx.EVT_KEY_DOWN, self.onKeyPress) 
     self.Show() 
    def onKeyPress(self, event): 
     keycode = event.GetKeyCode() 
     print keycode 
app = wx.App() 
form = AForm() 
app.MainLoop() 

パネルを取り外すと機能します。しかし、パネルはWindowsアプリケーションのように見えるようにフォームを取得する必要があるようです。

答えて

0

これについて実際には2つの使用方法があります。

パネルでwx.EVT_KEY_DOWNの代わりにwx.EVT_CHAR_HOOKを呼び出します(このようにしても、イベントはパネルによって厳密に処理されるのではなく、親ウィンドウ(フレーム)に伝播されます) 2番目のオプションで行くの)方が良いだろう。

panel.Bind(wx.EVT_CHAR_HOOK, self.onKeyPress) 

またはあなたはそれがそうのようなものをaditional文字キャッチできるようにするためにwxpython window documentationで述べたように、それはwx.WANTS_CHARSパネルコンストラクタで定義します。

panel = wx.Panel(self, wx.ID_ANY, style= wx.WANTS_CHARS) 
panel.Bind(wx.EVT_KEY_DOWN, self.onKeyPress) 
+0

私はこれらを試したと思っていますが、あなたは正しいです、それは動作します。私も何か奇妙なものを見つけた! Altキーを押すと、問題のコードで左右の矢印が検出されます。これで私はイベントリストを使うことを考えました! – Bruce

関連する問題