Event verändern

Plattformunabhängige GUIs mit wxWidgets.
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

Event verändern

Beitragvon HarryH » Montag 19. April 2004, 13:30

Hallo,

Ich arbeite mit wxPython.
Ich möchte dort gern ein ausgelöstes Key-Event verändern.
Beispiel:
Wenn ich auf meiner Tastatur "a" drücke soll "b" ausgegeben werden.

Geht das irgendwie?
Könnt ihr mir bitte weiterhelfen! Danke!
Gruß, Harry
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Montag 19. April 2004, 18:49

Hi
Du kannst doch die Funktion abfangen und dann ausgeben was Du willst.
Oder hab ich Dich falsch verstanden?
HarryH
User
Beiträge: 266
Registriert: Freitag 23. Mai 2003, 09:08
Wohnort: Deutschland

re:

Beitragvon HarryH » Dienstag 20. April 2004, 10:35

Hallo,

Ich habe vor das für einen Validator zu verwenden.
Ich habe mir das so vorgestellt:
Event abfangen.
Neues Key-Event erstellen und auslösen.

Ich habe ein wxTextControll. Dort möchte ich vom Benutzer Dezimalzahlen eingeben lassen. Schreibt er ein Komma, so soll dieses nicht als Komma sondern als Punkt geschrieben werden.

Ich weiß das es da schon ein vorgegebenes Modul gibt - wxMaskedTextCtrl und wxMaskedNumCtrl- aber ich möchte es gerne selbst versuchen.

Wie könnte ich das hinbekommen?
Gruß, Harry
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Dienstag 20. April 2004, 12:02

Aso. Das würd ich aber im Prinzip genauso machen.
- das Event des TextCtrl abfangen
- event..m_keyCode ändern
-textCtrl.EmulateKeyPress( event ) aufrufen

Habs noch nicht getestet...
Christopy
User
Beiträge: 131
Registriert: Montag 15. Dezember 2003, 22:39

Beitragvon Christopy » Dienstag 20. April 2004, 18:23

Das mit dem EmulateKeyPress() hab ich nicht hinbekommen. Aber man kann ja den Text von Hand ändern:

Code: Alles auswählen

    def OnPressKey( self, event ):
        if event.m_keyCode == ord(","):
            self.txtCtrl.SetValue( self.txtCtrl.GetValue() + "." )
            self.txtCtrl.SetInsertionPointEnd()
        else:
            event.Skip()

Das funktioniert für einfache Fälle. Allerdings muss man noch Fälle berücksichtigen, in denen etwas überschrieben wird, oder eine Auswahl überschrieben wird usw.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder