我试图捕获wx.Frame中发生的键盘事件,我希望下面的代码能够捕获这些事件。但是,当我运行代码时,不会调用OnKeyDown处理程序:
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()
如果有人知道怎么做,我会感激你的帮助。
我发现我可以在框架中添加一个面板,面板更容易接受键盘事件。
如果使用log.warning,则代码可以正常工作。
日志记录级别为:
默认日志记录级别为WARNING。只生成级别高于默认值的日志。因此,在默认级别(30),无论是
log.info
还是log.debug
都不会产生任何输出。在操作注释后编辑:设置正确的日志级别可以使代码在使用Python2.6和Wxpython2.8.11和2.8.12的winXP 32位和win7 64位上完美工作。但是由于某些原因,这些代码在ubuntu上不起作用,我不知道。这种差异与wxwidgets如何在不同的SO中实现有关,但与日志无关。 正如您已经发现的,为了让它在ubuntu中工作,它需要添加一个面板以及使用足够的日志级别。所以这是有效的:
相关问题 更多 >
编程相关推荐