1. Unterschiede Python-Online-Editor vs. Tigerjython/Tigerjython-Online

Man muss etwas aufpassen, weil man in im Python-Online-Editor nicht alle Befehle zur Verfügung hat, die man in der lokalen Version von Tigerjython oder im Tigerjython-Online verwenden kann. Umgekehrt sind im Python-Online-Editor einige neue Befehle hinzugekommen. In der Turtle-Dokumentation von Pythononline sind die neuen Befehle mit einem Stern markiert (siehe hier). Dafür hat die Version „Tigerjython“ zusätzliche Befehle, die in Pythononline nicht verfügbar sind (siehe hier). Wie z.B. makeColor.

Ich werde im Folgenden Pythononline verwenden.

2. Maus-Events registrieren

Maus-Ereignisse kann man direkt beim Befehl makeTurtle registieren. So sagt man dem Programm mit dem Befehl makeTurtle(mouseHit = onMouseHit), dass die Funktion onMouseHit aufgerufen werden soll, sobald die Maustaste gedrückt wird. Diese Funktion muss man selber schreiben und sie nimmt zwei Argumente, die x- und die y-Position der Stelle, an der man geklickt hat:

from gturtle import *
from random import randint

def dieMausWurdeGedrueckt(x,y):
    msgDlg("Jupp, es wurde gedrückt!")

makeTurtle(mouseHit=dieMausWurdeGedrueckt)

3. Tastatur-Events registrieren

Wenn man Tastatur-Ereignisse abfangen will, so ist die Methode bei Python-Online und bei Tigerjython (online oder lokal) etwas unterschiedlich.

a) Bei Pythononline

Bei Python-Online gibt man die Tastaturbefehle ausserhalb von makeTurtle an:

from gturtle import *

def enterPressed():
    msgDlg("Enter wurde gedrückt"=)
   
makeTurtle()
setPenColor("blue")
registerKey('enter', enterPressed)

b) Bei Tigerjython (online oder lokal)

Hier gibt man die Tastatur-Ereignisse wie die Maus-Ereignisse ein, d.h. direkt bei makeTurtle:

from gturtle import *

LEFT = 37
RIGHT = 39
UP = 38
DOWN = 40

def onKeyPressed(key):
   if key == LEFT:
      setHeading(-90)
   elif key == RIGHT:
      setHeading(90)
   elif key == UP:
      setHeading(0)
   elif key == DOWN:
      setHeading(180)

makeTurtle(keyPressed = onKeyPressed)
wrap()
while True:
    forward(10)
     

Aufgabe

Schreibe ein Programm, welches bei einem Mausklick einen Kreis mit zufälliger Grösse und einer zufälligen Farbe an der geklickten Stelle zeichnet. Wenn man die Enter-Taste drückt, soll das Bild gelöscht werden.