Wie binden Sie die Leertaste, um eine bestimmte Methode in tkinter (python)
Arbeite ich an einem Projekt in python, und ich habe eine Methode zu zeichnen, eine bestimmte Sache in tkinter. Ich will es so, dass wenn ich die Leertaste drücken, wird das Bild selbst aktualisieren (führen Sie die Methode erneut, weil ich kodierte die Methode, damit es sich neu zeichnen über sich selbst). Wie genau würde ich binden Sie die Leertaste, um die Methode so, dass das Programm laufen würde, ziehen und wieder ziehen, wenn ich die Leertaste gedrückt?
zum Beispiel, ich will es so, dass wenn ich die Leertaste drücken, das Programm stützt sich auf eine zufällige Stelle auf der Leinwand:
from Tkinter import *
from random import *
root=Tk()
canvas=Canvas(root,width=400,height=300,bg='white')
def draw():
canvas.delete(ALL)# clear canvas first
canvas.create_oval(randint(0,399),randint(0,299),15,15,fill='red')
draw()
canvas.pack()
root.mainloop()
wie würde ich binden Sie die Leertaste, um die Methode?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man etwas wie das hier tun:
Grundsätzlich binden Sie Ihre Zeichnung-Funktion, um einige top-level-element, um die
<Key>
Bindung, die ausgelöst wird, wenn eine Taste auf der Tastatur gedrückt wird. Dann das event-Objekt übergeben wird, hat einechar
Mitglied, welches einen string, der den Schlüssel auf der Tastatur gedrückt.Das Ereignis wird nur ausgelöst, wenn das Objekt, das es gebunden ist, um den Fokus hat, das ist, warum ich bin verbindlich, die
draw
Methode, um dieroot
Objekt, denn das wird immer im Fokus sein.<key>
eher als<space>
? Es sieht aus wie Sie machen mehr Arbeit für dich<space>
existierte bis nach sah ich die andere Antwort. Ich trenne meine Antwort in einem Fall ist es nützlich, aber ich von Ihnen positiv bewertet werden die andere Antwort.Können Sie auch verwenden
canvas.bind_all("<space>", yourFunction)
Das hören wird für Veranstaltungen in der gesamten Anwendung und nicht nur auf widget.