wx.Frameで発生するキーボードイベントをキャプチャしようとしています。これらのイベントをキャプチャするには、次のコードが必要です。私は、コードを実行したときしかし、ハンドラは、OnKeyDownが呼び出されることはありません:wxpythonでwx.Frameでキーボードイベントを取得する
import logging as log
import wx
class MainWindow(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(200,100))
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
self.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
self.Bind(wx.EVT_CHAR, self.OnKeyDown)
self.SetFocus()
self.Show(True)
def OnKeyDown(self, event=None):
log.debug("OnKeyDown event %s" % (event))
if __name__ == "__main__":
app = wx.App(False)
gui = MainWindow(None, "test")
app.MainLoop()
誰もがこれを行う方法を知っている場合、私はいくつかの助けをいただければ幸いです。
私はこの変更を試みて、ロギングパッケージを使用しないようにしました。いずれの変更も機能しませんでした。 – Kevin
@ケビン、あなたの答えのコードは、あなたの質問や私の答えの1つは、ロギングを排除さえしない意味ですか?どんなSO、python、wxPythonのバージョンを使っていますか?これはwin7とwinXP、Python 2.6、wxpython 2.8.11と2.8.12でテストされています。 – joaquin
私はUbuntu 11.04 64bitを使用しています。これは既に推測しているようです。だから、OSに基づいた奇抜ですが、パネルをフレームに追加するのは簡単な回避策です。 – Kevin