Seite 1 von 1
Tastaturereignis mit Frame-Widget verknüpfen
Verfasst: Montag 31. Dezember 2018, 14:53
von Kili0302
Moin zusammen,
ich spiele gerade mit der tkinter-Bibliothek und Tastaturereignissen rum. Habe nun folgenden Code:
Code: Alles auswählen
import tkinter
def handler(event):
print("Rechte Pfeiltaste gedrueckt")
main = tkinter.Tk()
frame = tkinter.Frame(main, width=400, height=400)
frame.bind("<KeyPress-Right>", handler)
frame.pack()
main.mainloop()
Ich möchte, dass die Funktion "handler" ausgeführt wird, wenn die rechte Pfeiltaste gedrückt wird. Das passiert aber leider nicht. Kann mir jemand helfen?
Mit freundlichen Grüßen
Kilian
Re: Tastaturereignis mit Frame-Widget verknüpfen
Verfasst: Montag 31. Dezember 2018, 16:10
von __blackjack__
Ein Widget muss den Fokus haben, damit es Tastaturereignisse bekommt. Einem `Frame` kann man den Fokus aber als Benutzer nicht geben, das muss im Code passieren.
Eingerückt wird mit vier Leerzeichen pro Ebene.
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter
def handle_right_arrow(_event):
print('Rechte Pfeiltaste gedrueckt')
def main():
root = tkinter.Tk()
frame = tkinter.Frame(root, width=400, height=400)
frame.pack()
frame.bind('<KeyPress-Right>', handle_right_arrow)
frame.focus()
root.mainloop()
if __name__ == '__main__':
main()
Re: Tastaturereignis mit Frame-Widget verknüpfen
Verfasst: Montag 31. Dezember 2018, 17:13
von Kili0302
__blackjack__ hat geschrieben: Montag 31. Dezember 2018, 16:10
Ein Widget muss den Fokus haben, damit es Tastaturereignisse bekommt. Einem `Frame` kann man den Fokus aber als Benutzer nicht geben, das muss im Code passieren.
Eingerückt wird mit vier Leerzeichen pro Ebene.
Code: Alles auswählen
#!/usr/bin/env python3
import tkinter
def handle_right_arrow(_event):
print('Rechte Pfeiltaste gedrueckt')
def main():
root = tkinter.Tk()
frame = tkinter.Frame(root, width=400, height=400)
frame.pack()
frame.bind('<KeyPress-Right>', handle_right_arrow)
frame.focus()
root.mainloop()
if __name__ == '__main__':
main()
Besten Dank, hat funktioniert!