Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
| lehrkraefte:sbt:informatik-glf2-23:pythonturtleevents [2023/12/10 23:45] – [Minimales Event Handling Beispiel] Karlheinz Schubert | lehrkraefte:sbt:informatik-glf2-23:pythonturtleevents [2023/12/11 00:00] (current) – [Event Registration] Karlheinz Schubert | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Ereignisbehandlung mit der Python Turtle Bibliothek ====== | ||
| + | |||
| + | Für die weiteren Beschreibungen wird angenomen, dass die folgende Initialisierung der Python Turtle Bibliothek gemacht wurde: | ||
| + | |||
| + | <code python> | ||
| + | import turtle | ||
| + | |||
| + | Zeichenflaeche = turtle.Screen() | ||
| + | Zeichenflaeche.setup(width=650, | ||
| + | </ | ||
| + | |||
| + | ===== Ereignisse (Events) ===== | ||
| + | |||
| + | Die Ereignisbehandlung (Event Handling) erlaubt, dass Programmteile (Funktionen) ausgeführt werden, wenn bestimmte Ereignisse auftreten. | ||
| + | |||
| + | Die Ereignisbehandlung ist eine Alternative zum zyklischen Abfragen von Zuständen (Polling). | ||
| + | |||
| + | Das Event Handling benötigt 3 Komponenten: | ||
| + | * Event Listener | ||
| + | * Event Registration | ||
| + | * Event Handler | ||
| + | |||
| + | ==== Event Listener ==== | ||
| + | Der Event Listener " | ||
| + | |||
| + | <code python> | ||
| + | Zeichenflaeche.listen() | ||
| + | </ | ||
| + | |||
| + | ==== Event Registration ==== | ||
| + | Jedes Event, auf das reagiert werden soll, muss beim Event Listener angemeldet werden. Dabei werden der Name des Event Handlers und das Event selbst angegeben. | ||
| + | |||
| + | Der Name des Event Handlers ist der pure Funktionsname, | ||
| + | |||
| + | Events sind die Basiszeichen der Tastatur: '' | ||
| + | und benannte Sondertasten wie zum Beispiel ' | ||
| + | |||
| + | Eine Uebersicht findet man hier [[https:// | ||
| + | |||
| + | Für jedes Event muss eine eigene Registration stattfinden und kann genau eine Funktion aufgerufen werden. | ||
| + | |||
| + | '' | ||
| + | |||
| + | <code python> | ||
| + | Zeichenflaeche.onkey(Schreibe_a, | ||
| + | Zeichenflaeche.onkey(Schreibe_b, | ||
| + | </ | ||
| + | |||
| + | Maus-Ereignis-Handler, | ||
| + | |||
| + | ==== Event Handler ==== | ||
| + | Der Event Handler ist die Funktion, die beim Auftreten des Events aufgerufen wird. | ||
| + | |||
| + | Jeder Eventhandler kann nur genau Event behandlen, da bei der Registration genau ein Event einem Event Handler zugeordnet wird. | ||
| + | |||
| + | <code python> | ||
| + | def Schreibe_a(): | ||
| + | print(' | ||
| + | |||
| + | def Schreibe_b(): | ||
| + | print(' | ||
| + | </ | ||
| + | |||
| + | <WRAP left round tip 100%> | ||
| + | Hinweis: Wie immer in Python müssen die Funktionen vor ihrer Verwendung definiert werden. | ||
| + | </ | ||
| + | |||
| + | ==== Minimales Event Handling Beispiel ==== | ||
| + | <code python> | ||
| + | # MiniMiniPaint | ||
| + | import turtle | ||
| + | |||
| + | Zeichenflaeche = turtle.Screen() | ||
| + | Zeichenflaeche.setup(width=650, | ||
| + | Zeichenflaeche.title(' | ||
| + | |||
| + | Stift = turtle.Turtle() | ||
| + | |||
| + | # Event Handler Funktionen | ||
| + | def Zeichne_hoch(): | ||
| + | print(' | ||
| + | Stift.setheading(90) | ||
| + | Stift.forward(50) | ||
| + | |||
| + | def Zeichne_rechts(): | ||
| + | print(' | ||
| + | Stift.setheading(0) | ||
| + | Stift.forward(50) | ||
| + | |||
| + | def Setze_rot(): | ||
| + | print(' | ||
| + | Stift.color(' | ||
| + | |||
| + | def Setze_gruen(): | ||
| + | print(' | ||
| + | Stift.color(' | ||
| + | |||
| + | def Schreibe_Maus_Koordinaten(x, | ||
| + | print(f' | ||
| + | | ||
| + | # Initialisierung der Listener Funktionalität | ||
| + | Zeichenflaeche.listen() | ||
| + | # Registrierung der Event Handler | ||
| + | Zeichenflaeche.onkey(Zeichne_hoch, | ||
| + | Zeichenflaeche.onkey(Zeichne_rechts, | ||
| + | Zeichenflaeche.onkey(Setze_rot, | ||
| + | Zeichenflaeche.onkey(Setze_gruen, | ||
| + | Zeichenflaeche.onclick(Schreibe_Maus_Koordinaten) | ||
| + | |||
| + | # Programm laufen lassen | ||
| + | Zeichenflaeche.mainloop() | ||
| + | </ | ||