Hallo ich möchte bestimmte Tasten abfangen. Z.B. die Taste F2 oder die Tastenkombinationen wie z.B. Alt + F4. Wie geht das? Ich habe zwar hier gelesen das manche das mit dem Skript Pygame machen, aber ich suche halt eine andere Lösung. Zur Zeit bastel ich gerade an der Demo von Robin Dunn, aber bin noch nicht weit gekommen. Also wenn jemadn von euch eine Lösung hat......
Greetz from 2bock
wxPython - Taste F2 abfangen.
Anbei ein kleines Beispiel, wie Du in einem Frame KeyEvents abfangen kannst. Dabei bindest Du ein KeyDown Event an das Framefenster und wenn gewünscht auch an alle anderen Widgets in dem Frame. Wird nun eine Taste gedrückt wird die angegebene Funktion aufgerufen und das Event auf entsprechende Tasten getestet.
Willst Du ein Alt+F4 verhindern mußt Du zusätzlich EVT_CLOSE binden und dort evt. das Schließen verhindern.
Willst Du ein Alt+F4 verhindern mußt Du zusätzlich EVT_CLOSE binden und dort evt. das Schließen verhindern.
Code: Alles auswählen
from wxPython.wx import *
class MyFrame(wxFrame):
def __init__(self, *args, **kwds):
kwds["style"] = wxDEFAULT_FRAME_STYLE
wxFrame.__init__(self, *args, **kwds)
self.button_1 = wxButton(self, wxNewId(), "button_1")
EVT_KEY_DOWN( self, self.OnPressKey )
EVT_KEY_DOWN( self.button_1, self.OnPressKey )
self.SetTitle("Frame 1")
sizer_1 = wxBoxSizer(wxVERTICAL)
sizer_1.Add(self.button_1, 0, 0, 0)
self.SetAutoLayout(1)
self.SetSizer(sizer_1)
sizer_1.Fit(self)
sizer_1.SetSizeHints(self)
self.Layout()
def OnPressKey( self, event ):
if event.m_keyCode == WXK_F4:
if event.AltDown():
print "ALT+F4"
else:
print "F4"
Ich habe zwar noch eine andere Lösung gefunden, aber diese hier ist top. Also Danke nochmal für den Tip!!
Greetz 2bock
Greetz 2bock