Python event-binding mit tkinter
So Leute, ich bin neu GUIs in Python und ich habe versucht, zu verstehen, die envents Prozess, hier ist mein code, und die Absicht, dass, wenn ich drücken Sie die 'a' - Taste es sollte Druck "- Taste gedrückt'. Aber es funktioniert nicht für mich.
#!/usr/bin/env python3
# -*-coding:UTF-8 -*
from tkinter import *
root = Tk()
def callback(event):
print("key pressed")
canvas = Canvas(root, width=100, height=100, bg='blue')
canvas.bind("a", callback)
canvas.pack()
root.mainloop()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es nicht ausführen der callback-Funktion, da der Schwerpunkt des Programms liegt auf der
Tk
element. Wenn Sie ersetzen Sie diese Zeile mitroot.bind("a", callback)
, es wird so funktionieren wie Sie es erwarten.Das problem ist, dass das canvas-element nicht den Fokus erhalten, wenn Sie klicken Sie auf es wie andere widgets als Eintrag, also es reagiert nur auf keydown-Ereignisse, wenn Sie zuerst anrufen
canvas.focus_set()
.<1>
zu tun, diefocus_set
, die Ihnen erlauben, klicken Sie im canvas-Bereich und geben Sie dann ein Zeichen.