lehrkraefte:sbt:informatik-glf2-23:pythonturtleevents

Ereignisbehandlung mit der Python Turtle Bibliothek

Für die weiteren Beschreibungen wird angenomen, dass die folgende Initialisierung der Python Turtle Bibliothek gemacht wurde:

import turtle
 
Zeichenflaeche = turtle.Screen()
Zeichenflaeche.setup(width=650, height=450, startx=900, starty=0)

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

Der Event Listener “hört”, ob ein Event auftritt. Ist dieses Event bei ihm registriert worden, dann löst er den für dieses Event registrierten Event Handler aus.

Zeichenflaeche.listen()

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, also ohne Klammern, der Funktion die für dieses Event aufgerufen werden soll.

Events sind die Basiszeichen der Tastatur: a-z, A-Z, 0-9 und benannte Sondertasten wie zum Beispiel 'plus' für '+' oder 'Up' für die ⬆️ Taste oder Maus-Klicks.

Eine Uebersicht findet man hier Key-Names oder hier KeySyms.

Für jedes Event muss eine eigene Registration stattfinden und kann genau eine Funktion aufgerufen werden.

onkey Handler haben keine Funktionsparamter.

Zeichenflaeche.onkey(Schreibe_a, 'a')
Zeichenflaeche.onkey(Schreibe_b, 'b')

Maus-Ereignis-Handler, wie onclick, können Paramter, wie z.B. die aktuellen Mauskoordinaten, enthalten.

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.

def Schreibe_a():
  print('Die Taste "a" wurde gedrückt.')
 
def Schreibe_b():
  print('Die Taste "b" wurde gedrückt.')

Hinweis: Wie immer in Python müssen die Funktionen vor ihrer Verwendung definiert werden.

# MiniMiniPaint
import turtle
 
Zeichenflaeche = turtle.Screen()
Zeichenflaeche.setup(width=650, height=450, startx=900, starty=0)
Zeichenflaeche.title('Minimales Event Handling Beispiel')
 
Stift = turtle.Turtle()
 
# Event Handler Funktionen
def Zeichne_hoch():
    print('HOCH')
    Stift.setheading(90)
    Stift.forward(50)
 
def Zeichne_rechts():
    print('RECHTS')
    Stift.setheading(0)
    Stift.forward(50)
 
def Setze_rot():
    print('ROT')
    Stift.color('red')
 
def Setze_gruen():
    print('GRUEN')
    Stift.color('green')
 
def Schreibe_Maus_Koordinaten(x,y):
    print(f'Maus-Koordinaten: {x}, {y}')
 
# Initialisierung der Listener Funktionalität
Zeichenflaeche.listen()
# Registrierung der Event Handler
Zeichenflaeche.onkey(Zeichne_hoch, 'Up')
Zeichenflaeche.onkey(Zeichne_rechts, 'Right')
Zeichenflaeche.onkey(Setze_rot, 'r')   
Zeichenflaeche.onkey(Setze_gruen, 'g') 
Zeichenflaeche.onclick(Schreibe_Maus_Koordinaten)  
 
# Programm laufen lassen
Zeichenflaeche.mainloop()
  • lehrkraefte/sbt/informatik-glf2-23/pythonturtleevents.txt
  • Last modified: 2023/12/11 01:00
  • by Karlheinz Schubert