我試圖捕獲發生在wx.Frame內部的鍵盤事件,並且我期望以下代碼捕獲這些事件。wxpython捕獲wx.Frame中的鍵盤事件
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()
如果有人知道如何做到這一點,我將不勝感激一些幫助:然而,當我運行代碼的處理器的onkeydown永遠不會被調用。
我試着做這個改變,也嘗試不使用日誌包 - 只是打印。這兩個變化都沒有奏效 – Kevin 2012-01-11 07:21:59
@Kevin,你的意思是你的答案中的代碼有效,而你的問題或答案中的代碼不會,甚至消除了日誌記錄?你使用的是什麼SO,Python和wxPython版本?這在win7和winXP,python 2.6,wxpython 2.8.11和2.8.12中測試過 – joaquin 2012-01-11 13:10:39
我使用的是Ubuntu 11.04 64bit,因爲它看起來像你已經推導出來的。所以這是一個基於操作系統的怪癖,但將面板添加到框架是一個簡單的解決方法。 – Kevin 2012-01-12 00:27:19