531
18.4
Programmierung eines Eventhandlers
18.4.1 Beispiel für eine Event-Auswertung
Das folgende Skript ist eine Variante des Gemini-Programms aus dem vorigen Abschnitt.
Ersetzen Sie alle
bind()-Aufrufe durch den Aufruf in Zeile #1. Hier gibt es nur einen ein-
zigen Eventhandler, der für alle Tastenereignisse zuständig ist, das Event-Objekt auswertet
und in Abhängigkeit vom Wert des
keysym_num-Attributs die richtige Aktion ausführt.
widget
Widget, das den Event ausgelöst hat. Wenn z.B. ein Button angeklickt
worden ist, enthält das Attribut eine Referenz auf diesen Button.
width
Wenn der Event durch Veränderung einer Widget-Größe ausgelöst
wurde (
Configure), so enthält das Attribut die neue Breite des Widgets
in Pixel.
x
x-Koordinate des Mauszeigers zum Zeitpunkt des Events bezogen auf
die linke obere Ecke des Widgets
y
y-Koordinate des Mauszeigers zum Zeitpunkt des Events bezogen auf
die linke obere Ecke des Widgets
# gemini1.pyw
class Spielflaeche:
def __init__(self):
. . .
self.fenster.bind(sequence='<Any-KeyPress>',
f u n c=s e lf. b e weg e ) #1
self.fenster.mainloop()
def bewege(self,event):
if event.keysym_num==65362: #Up
self.canvas.move(self.gemini7,0,-3)
elif event.keysym_num==65364: #Down
self.canvas.move(self.gemini7,0,3)
elif event.keysym_num==65363: #Right
self.canvas.move(self.gemini7,3,0)
elif event.keysym_num==65361: #Left
self.canvas.move(self.gemini7,-3,0)
s = Spielflaeche()
Attribut Erklärung
Tabelle 18.5: Die wichtigsten Event-Attribute (Forts.)

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.