SetFocus & ENTER abfangen

Plattformunabhängige GUIs mit wxWidgets.
Antworten
Slevin
User
Beiträge: 5
Registriert: Sonntag 26. August 2012, 21:54

Hallo,
ich arbeite immer noch mit dem gegebenen COde und muss nun an einer anderen Stelle den Fokus setzen und die "Enter"-Eingabe abfangen. Hier ein Ausschnit des Codes (von mir geschrieben):

Code: Alles auswählen

self.panelCalibration.SetFocus()                                       
self.panelCalibration.Bind(wx.EVT_KEY_DOWN, self.on_key_down)

def on_key_down(self, event):                                                  
    print("success")
    if event.GetKeyCode() == wx.WXK_RETURN:
        self.EndModal(wx.ID_OK)
    else:
        event.Skip() 
Das Problem ist folgendes: Dieses "panelCalibration" hat irgendwie zwei Zustände:
Bild
Zustand 1

Bild
Zustand 2

Beim Öffnen des Panels ist der 1. Zustand aktiv. Das ist gar nicht mal so schlecht, da ich nun (wie gewünscht) eine Zahl eingeben kann, welche direkt in der edit line erscheint. Jedoch wechselt das Feld dann in den 2. Zustand ("Editierzustand"?). Anhand der ausgegeben "success" Zeile konnte ich erkennen, dass lediglich beim allerersten Tastendruck meine "on_key_down" Funktion aufgerufen wurde; sobald ich weitertippe wird die Funktion nicht mehr aufgerufen.
Das 2. Problem ist, dass die "Enter"-Taste nicht erkannt wird: Wenn ich das Panel öffne und als ersten Tastendruck auf "Enter" tippe, dann erscheint keine "success" Zeile (= Funktion wird nicht aufgerufen).

Hoffe ihr könnt mir helfen =)
Piet Lotus
User
Beiträge: 80
Registriert: Dienstag 14. November 2006, 10:40

Hallo Slevin,
ich fürchte mir ist nicht ganz klar, was deine genauen Anforderungen sind?
Was soll deine "on_key_down"-Methode genau bewirken? Möchtest du später damit die Eingaben der Tabellenzellen zusammenbauen? Es sieht danach aus, als ob in deinem "panelCalibration" eine Tabelle, also im wxPython-Jargon ein "grid", vorkommt? Warum nutzt du nicht die zum "grid", bzw. die zum dahinterliegenden Tabellenmodell mitgelieferten Methoden, die du vielleicht allerdings noch selbst zu überschreiben hast, damit sie deinen Zwecken genügen. Viele Grüße
Piet
Antworten