我有一个OpenGL的wxpython应用程序,我试图在Ubuntu工作。它是由Mac OSX开发的(由其他人),并且在那里工作得很好。Wxpython EVT_CHAR回调没有被调用
我最近遇到的问题是键盘事件没有被捕获。
的代码看起来是这样的:
class GLFrame(wx.Frame):
def __init__(...):
...
self.canvas.Bind(wx.EVT_MOTION, self.mouseMotion)
self.canvas.Bind(wx.EVT_CHAR, self.character)
...
def character(self, evt):
print "EVT_CHAR"
# do stuff
def mouseMotion(self, evt):
print "EVT_MOTION"
# do stuff
我grepped整个代码库绑定调用,而不是其他使用EVT_CHAR,EVT_KET_DOWN或EVT_KEY_UP。我也尝试了EVT_KEY_DOWN和EVT_KEY_UP,但都没有成功。
我也试着从
self.canvas.Bind(...)
改变绑定调用
self.Bind(...)
这打破EVT_MOTION和EVT_CHAR回调仍不会被调用。
是否有任何调用可能会在键盘事件到达GLFrame之前捕获?我是wxpython的新手,尽管它对我来说很有意义,但我确信有一些我不知道的“陷阱”。
画布是否有焦点?也尝试使用wx.ACCEPTS_CHARS风格(我认为它...) –
它看起来像样式是wx.WANTS_CHARS。虽然不起作用。很确定画布有重点。 –