import wx class MainWindow(wx.Frame): def __init__(self, parent, title=u"Test"): wx.Frame.__init__(self, parent, -1, title) panel = wx.Panel(self) textLabel = wx.StaticText(panel, -1, u"Press keys to be logged:") self.message = wx.TextCtrl(panel, -1, style=wx.TE_MULTILINE|wx.TE_PROCESS_ENTER|wx.WANTS_CHARS) self.message.Bind(wx.EVT_CHAR, self.charPressed) closeBtn = wx.Button(panel, -1, u"&Close") self.Bind(wx.EVT_BUTTON, self.onClose, closeBtn) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(self.message) sizer.Add(closeBtn) panel.SetSizerAndFit(sizer) panel.Layout() sizer = wx.BoxSizer() sizer.Add(panel, 1, wx.EXPAND) self.SetSizerAndFit(sizer) def onClose(self, event): self.Close() def charPressed(self, event): key = event.GetKeyCode() modifiers = event.GetModifiers() keyDlg = wx.MessageDialog(None, u"Key: %s\nModifiers: %s" % (str(key), str(modifiers)), u"Key code", wx.OK|wx.ICON_INFORMATION) keyDlg.ShowModal() keyDlg.Destroy() class TestApp(wx.App): def OnInit(self): frame = MainWindow(None, u"Test") self.SetTopWindow(frame) frame.Show(True) return True app = TestApp() app.MainLoop()