我需要为使用 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 构造函数的两行调用时,我调用了字符函数。向框架添加面板似乎会干扰框架的 EVT_CHAR 的绑定。
我该如何解决这个问题?我在我的代码中做错了吗?