我有一个 OpenGL wxpython 应用程序,我正在尝试在 Ubuntu 中工作。它是在 Mac OSX 上(由其他人)开发的,在那里工作得很好。
我遇到的最后一个突出问题是键盘事件没有被捕获。
代码看起来像这样:
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
我已经为 Bind 调用准备了整个代码库,没有其他东西在使用 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 的新手,虽然它对我来说很有意义,但我确信有一些我不知道的“陷阱”。