Befehlseingabe über Tasten in Tkinter

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Theodor
User
Beiträge: 17
Registriert: Montag 30. Dezember 2019, 18:53

Hallo,
wie kann man zusätzlich zu den Eingaben mit der Maus auch Eingaben über eine Tastatur machen?
Ich habe folgendes gefunden:
#-------------------------------------------------------------------------------
def Taste(event):
char = repr(event.char)
anz_2 = Message(root_szp, text=("Taste = ")+char, width=250)
anz_2.place(x=100, y=575)
#-------------------------------------------------------------------------------
root.bind("<Key>", Taste)

Das funktioniert zwar, aber das Ergebnis etwa bei der Taste S lautet 'S'. Offiziell ist es ein char,
den ich aber nicht weiter verwerten kann, etwa über die Abfrage,
ob es ein "S" ist:
if char == 'S'
geht nicht.
Als Rückgabe etwa zur CTRL S erhält man '\x13'.

Ich möchte beispielsweise bei einem Menüaufruf statt mit der Maus auch einen Aufruf per Taste machen,
etwa so:
Öffnen CTRL S
Wer kann helfen?
Theodor
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Dass Du 'S' bekommst, machst Du doch selbst, da Du `repr` benutzt. Ein `event` hat noch etliche weitere Nützliche Attribute, wie keysym oder state.
Tastenkürzel bindet man mit ihrem Name:

Code: Alles auswählen

root.bind_all("<Control-s>", save)
Theodor
User
Beiträge: 17
Registriert: Montag 30. Dezember 2019, 18:53

Hallo,
Danke für die Antwort. Muß es mal probieren.
Eine Frage habe ich aber: Woher weißt Du das? Wo gibt es Literatur oder sonstiges hierüber?
Auch über etliche andere Dinge wüßte ich Bescheid, man kann aber vieles nur schwer oder gar nicht finden.
Theodor
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Steht alles in der offiziellen Dokumentation: https://effbot.org/tkinterbook/tkinter- ... ndings.htm

Sowohl wie die Bindung formatiert werden muss, als auch welche Attribute die Event Objekte haben.
Antworten