wxPython を使用して開発している GUI アプリケーションの EVT_CHAR イベントをバインドする必要があります。私は次のことを試しましたが、コードの動作を理解できません。
import wx
import wx.lib.agw.flatnotebook as fnb
class DemoApp(wx.App):
def __init__(self):
wx.App.__init__(self, redirect=False)
self.mainFrame = DemoFrame()
self.mainFrame.Show()
def OnInit(self):
return True
class DemoFrame(wx.Frame):
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, wx.ID_ANY,
"FlatNotebook Tutorial",
size=(600,400)
)
panel = wx.Panel(self)
button = wx.Button(panel, label="Close", pos=(125, 10), size=(50, 50))
self.Bind(wx.EVT_CHAR, self.character)
def character(self, event):
print "Char keycode : {0}".format(event.GetKeyCode())
if __name__ == "__main__":
app = DemoApp()
app.MainLoop()
文字関数が呼び出されることはありません。ただし、Frame コンストラクターへの 2 行の呼び出しをコメント アウトすると、I 文字関数が呼び出されます。フレームにパネルを追加すると、フレームの EVT_CHAR のバインドが妨げられるようです。
この問題に対処するにはどうすればよいですか? コードで何か間違ったことをしていますか?