341
Gefüllte Flächen
abgestürzt ist. Auf meiner Windows-Maschine geschieht das mit einem
Laufzeitfehler und der unangenehmen Fehlermeldung:
Dies kannst du durch Beachtung folgender Regel verhindern:
Um
Turtle.ondrag()
sicher verwenden zu können, muss die Rekur-
sionsgrenze für Python vom voreingestellten Standardwert 1000 auf
einen hohen Wert, z. B. 20000 gesetzt werden. Dies geschieht am bes-
ten, indem du am Anfang des Programms folgende zwei Zeilen ein-
fügst:
import sys
sys.setrecursionlimit(20000)
>
Füge die beiden Code-Zeilen gleich unter der
from turtle im-
port
-Anweisung ins Script ein.
>
Speichere eine Kopie von
scribble_arbeit.py
als
scribble03.py
ab.
Gefüllte Flächen
Um gezeichnete Flächen füllen zu können, müssen wir dafür sorgen, dass
die Turtle-Methoden
begin_fill()
(vor dem Zeichnen des Umrisses) und
end_fill()
(danach) ausgeführt werden können. Vorschlag: Wir binden
dies an Mausklicks der rechten Maustaste. Probieren wir den Mechanismus
interaktiv aus:
>
Führe
scribble_arbeit.py
aus und mach mit:
>>> stift.fillcolor(
"black"
)
>>> stift.filling()
False
>>> stift.begin_fill()
>>> stift.filling()
True
342
Ereignisgesteuerte Programme
Kapitel
13
>
Kritzle nun eine irgendwie geschlossene Linie ins Grafik-Fenster. Dann
weiter:
>>> stift.end_fill()
>>> stift.filling()
False
Du siehst, die Turtle hat eine Methode, um festzustellen, in welchem Füll-
zustand sie ist, nämlich
filling()
. Damit können wir die rechte Maustas-
te so programmieren, dass sie Füllen einschaltet, wenn es gerade aus ist,
und ausschaltet, wenn es eingeschaltet ist. Damit aber auch wir
sehen
, wie
der Zustand der Turtle ist, nehmen wir die Füllfarbe einfach weg, wenn die
Turtle nicht füllt. Eine Funktion, die das tut, könnte so aussehen:
def fuellenumschalten():
if stift.filling():
stift.end_fill()
stift.fillcolor("")
else:
stift.begin_fill()
stift.fillcolor("black")
Du erinnerst dich aber sicherlich daran, dass Funktionen/Methoden, die an
das Klick-Ereignis gebunden werden sollen, zwei Eingabeparameter haben
müssen. Deshalb müssen wir ihnen zwei Parameter verpassen, obwohl sie
in diesem besonderen Fall gar nicht gebraucht werden. Sie sind also gewis-
sermaßen Schein-Parameter, auf Englisch:
Dummy
-Parameter. Um dies
auszudrücken, nennen wir sie
xdummy
und
ydummy
.
Füge den Code für die entsprechend ergänzte Funktion
fuellenumschal-
ten()
nach dem Code für
jump()
in
scribble_ arbeit.py
ein und den
entsprechenden Aufruf der
onclick()
-Methode als vorletzte Zeile im
Programm:
def fuellenumschalten(xdummy, ydummy):
if stift.filling():
stift.end_fill()
stift.fillcolor("")
else:
stift.begin_fill()
stift.fillcolor("black")
...

Get Python für Kids 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.