ich suche eine Möglichkeit wie ich eine Applikation also das Hauptfenster per Escape Key schließen kann.
Ich habe dazu diese Lösung gefunden, allerdings hat diese den Nachteil das es nur funktioniert wenn der Focus auf dem entsprechenden Panel liegt.
Hab ich aber den Focus auf dem textCtrl dann zeigt das Escape drücken keine Wirkung.
Code: Alles auswählen
#!/usr/bin/python
# keyevent.py
import wx
class KeyEvent(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title)
panel = wx.Panel(self, -1)
panel.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
panel.SetFocus()
text = wx.TextCtrl(panel, -1, "")
self.Centre()
self.Show(True)
def OnKeyDown(self, event):
keycode = event.GetKeyCode()
if keycode == wx.WXK_ESCAPE:
ret = wx.MessageBox('Are you sure to quit?', 'Question',
wx.YES_NO | wx.CENTRE | wx.NO_DEFAULT, self)
if ret == wx.YES:
self.Close()
event.Skip()
app = wx.App()
KeyEvent(None, -1, 'keyevent.py')
app.MainLoop()
Muss ich nun für jedes widget das ich anlege das EVT_KEY_DOWN bestimmen damit mein Vorhaben funktioniert?