tkinter – Ereignisse

Wie bereits erwähnt, verbringt eine Tkinter-Anwendung die meiste Zeit in einer Ereignisschleife (Eingabe über die Methode mainloop). Ereignisse können aus verschiedenen Quellen stammen, z. B. durch Drücken von Tasten und Mausoperationen durch den Benutzer, und Ereignisse aus dem Fenstermanager neu zeichnen (in vielen Fällen indirekt durch den Benutzer verursacht).

Tkinter bietet einen leistungsstarken Mechanismus, mit dem Sie selbst mit Ereignissen umgehen können. Für jedes Widget können Sie Python-Funktionen und -Methoden an Ereignisse binden.

widget.bind (event, handler)

Wenn ein mit der Ereignisbeschreibung übereinstimmendes Ereignis im Widget auftritt, wird der angegebene Handler mit einem Objekt aufgerufen, das das Ereignis beschreibt.

Hier ist ein einfaches Beispiel:
Erfassen von Klicks in einem Fenster

from Tkinter import * 
root = Tk()
def callback(event):
print "clicked at", event.x, event.y
frame = Frame(root, width=100, height=100)
frame.bind("<Button-1>", callback)
frame.pack()
root.mainloop()

Wenn Sie dieses Skript ausführen, müssen Sie in das Bild klicken, bevor es Tastaturereignisse empfängt.
Events

Ereignisse werden als Zeichenfolgen angegeben und verwenden eine spezielle Ereignissyntax:

<Modifikator-Typ-Detail>

Das Typfeld ist der wichtigste Teil eines Ereignisbezeichners. Es gibt die Art des Ereignisses an, das wir binden möchten, und kann Benutzeraktionen wie Schaltfläche und Schlüssel oder Fenstermanagerereignisse wie Eingeben, Konfigurieren und andere sein. Die Modifizierer- und Detailfelder dienen zur zusätzlichen Information und können in vielen Fällen ausgelassen werden. Es gibt auch verschiedene Möglichkeiten, die Ereigniszeichenfolge zu vereinfachen. Um beispielsweise eine Tastaturtaste zu finden, können Sie die spitzen Klammern weglassen und die Taste so verwenden, wie sie ist. Es sei denn, es handelt sich natürlich um ein Leerzeichen oder einen Winkel.

Anstatt einige Seiten mit der Erörterung aller syntaktischen Verknüpfungen zu verbringen, werfen wir einen Blick auf die häufigsten Ereignisformate:

Event Formats = Ereignissformate