Seite 1 von 1

wxPython - Taste F2 abfangen.

Verfasst: Freitag 18. Juni 2004, 09:07
von 2bock
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 :wink:

Verfasst: Freitag 18. Juni 2004, 17:34
von Christopy
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.

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"


Danke!

Verfasst: Montag 28. Juni 2004, 07:39
von 2bock_not_logged
Ich habe zwar noch eine andere Lösung gefunden, aber diese hier ist top. Also Danke nochmal für den Tip!!

Greetz 2bock :wink: :wink: