Tôi đang cố gắng nắm bắt các sự kiện bàn phím xảy ra bên trong wx.Frame và tôi sẽ mong đợi mã sau đây để nắm bắt các sự kiện đó. Tuy nhiên, trình xử lý OnKeyDown không bao giờ được gọi khi tôi chạy mã:các sự kiện bàn phím chụp wxpython trong một 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()
Nếu có ai biết cách thực hiện việc này, tôi sẽ đánh giá cao một số trợ giúp.
Tôi đã thử thực hiện thay đổi này và cũng đã thử không sử dụng gói ghi nhật ký - chỉ cần in. Không thay đổi. – Kevin
@Kevin, bạn có nghĩa là mã trong câu trả lời của bạn hoạt động và câu hỏi trong câu hỏi của bạn hoặc câu trả lời của tôi không, thậm chí loại bỏ đăng nhập? Bạn đang sử dụng phiên bản SO, python và wxPython nào? Điều này được thử nghiệm trong win7 và winXP, python 2.6, wxpython 2.8.11 và 2.8.12 – joaquin
Tôi đang sử dụng Ubuntu 11.04 64bit, vì có vẻ như bạn đã suy luận. Vì vậy, nó là một quirk dựa trên hệ điều hành, nhưng thêm bảng điều khiển vào khung là một công việc dễ dàng xung quanh. – Kevin