turtle — Turtle-Grafik¶
Quellcode: Lib/turtle.py
Einleitung¶
Turtle-Grafik ist eine Implementierung der beliebten geometrischen Zeichenwerkzeuge, die in Logo eingeführt wurden, entwickelt von Wally Feurzeig, Seymour Papert und Cynthia Solomon im Jahr 1967.
Erste Schritte¶
Stellen Sie sich eine Roboter-Schildkröte vor, die bei (0, 0) in der x-y-Ebene startet. Nach einem import turtle geben Sie ihr den Befehl turtle.forward(15), und sie bewegt sich (auf dem Bildschirm!) 15 Pixel in die Richtung, in die sie gerade blickt, und zeichnet dabei eine Linie. Geben Sie ihr den Befehl turtle.right(25), und sie dreht sich an Ort und Stelle um 25 Grad im Uhrzeigersinn.
In Python bietet die Turtle-Grafik eine Darstellung einer physischen „Schildkröte“ (ein kleiner Roboter mit einem Stift), der auf einem Blatt Papier auf dem Boden zeichnet.
Es ist eine effektive und bewährte Methode für Lernende, Programmierkonzepte und die Interaktion mit Software kennenzulernen, da sie sofortiges, sichtbares Feedback liefert. Sie bietet auch einen bequemen Zugriff auf grafische Ausgaben im Allgemeinen.
Die Schildkröten-Grafik wurde ursprünglich als Bildungswerkzeug für Lehrer im Klassenzimmer geschaffen. Für Programmierer, die grafische Ausgaben erstellen müssen, kann sie eine Möglichkeit sein, dies zu tun, ohne den Aufwand, komplexere oder externe Bibliotheken in ihre Arbeit einzubinden.
Tutorial¶
Neue Benutzer sollten hier beginnen. In diesem Tutorial werden wir einige Grundlagen der Schildkröten-Grafik untersuchen.
Starten einer Schildkröten-Umgebung¶
Importieren Sie in einer Python-Shell alle Objekte aus dem turtle Modul.
from turtle import *
Wenn Sie auf einen Fehler No module named '_tkinter' stoßen, müssen Sie das Tk Interface-Paket auf Ihrem System installieren.
Grundlegendes Zeichnen¶
Bewegen Sie die Schildkröte 100 Schritte vorwärts.
forward(100)
Sie sollten (höchstwahrscheinlich in einem neuen Fenster auf Ihrem Bildschirm) eine Linie sehen, die von der Schildkröte gezeichnet wurde und nach Osten zeigt. Ändern Sie die Richtung der Schildkröte, sodass sie sich um 120 Grad nach links (gegen den Uhrzeigersinn) dreht.
left(120)
Fahren wir fort und zeichnen ein Dreieck.
forward(100)
left(120)
forward(100)
Beachten Sie, wie die Schildkröte, dargestellt durch einen Pfeil, in verschiedene Richtungen zeigt, während Sie sie steuern.
Experimentieren Sie mit diesen Befehlen und auch mit backward() und right().
Stiftsteuerung¶
Versuchen Sie, die Farbe zu ändern – zum Beispiel color('blue') – und die Breite der Linie – zum Beispiel width(3) – und dann erneut zu zeichnen.
Sie können die Schildkröte auch bewegen, ohne zu zeichnen, indem Sie den Stift anheben: up() vor der Bewegung. Um wieder zu zeichnen, verwenden Sie down().
Die Position der Schildkröte¶
Bringen Sie Ihre Schildkröte zu ihrem Ausgangspunkt zurück (nützlich, wenn sie vom Bildschirm verschwunden ist).
home()
Die Heimatposition ist in der Mitte des Schildkrötenbildschirms. Wenn Sie sie jemals wissen müssen, erhalten Sie die x-y-Koordinaten der Schildkröte mit
pos()
Heimat ist bei (0, 0).
Und nach einer Weile wird es wahrscheinlich hilfreich sein, das Fenster zu löschen, damit wir von neuem beginnen können.
clearscreen()
Algorithmus-basierte Muster erstellen¶
Mit Schleifen ist es möglich, geometrische Muster aufzubauen.
for steps in range(100):
for c in ('blue', 'red', 'green'):
color(c)
forward(steps)
right(30)
- die natürlich nur durch die Vorstellungskraft begrenzt sind!
Lassen Sie uns die Sternform oben auf dieser Seite zeichnen. Wir wollen rote Linien, gefüllt mit Gelb.
color('red')
fillcolor('yellow')
So wie up() und down() bestimmen, ob Linien gezeichnet werden, kann das Füllen ein- und ausgeschaltet werden.
begin_fill()
Als Nächstes erstellen wir eine Schleife.
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
abs(pos()) < 1 ist ein guter Weg, um zu wissen, wann sich die Schildkröte wieder an ihrem Heimatpunkt befindet.
Schließlich vervollständigen Sie das Füllen.
end_fill()
(Beachten Sie, dass das Füllen tatsächlich erst stattfindet, wenn Sie den Befehl end_fill() geben.)
Wie geht das…¶
Dieser Abschnitt behandelt einige typische Anwendungsfälle und Ansätze für die Schildkröten-Grafik.
So schnell wie möglich loslegen¶
Einer der Freuden der Schildkröten-Grafik ist das sofortige, visuelle Feedback, das durch einfache Befehle verfügbar ist – es ist eine hervorragende Möglichkeit, Kindern Programmierideen mit minimalem Aufwand näherzubringen (nicht nur Kindern, natürlich).
Das Turtle-Modul macht dies möglich, indem es seine gesamte grundlegende Funktionalität als Funktionen verfügbar macht, die mit from turtle import * aufgerufen werden können. Das Turtle-Grafik-Tutorial behandelt diesen Ansatz.
Es ist erwähnenswert, dass viele der Schildkrötenbefehle auch noch kürzere Entsprechungen haben, wie z. B. fd() für forward(). Diese sind besonders nützlich bei der Arbeit mit Lernenden, für die Tippen noch keine Fähigkeit ist.
Sie müssen das
Tk Interface-Paketauf Ihrem System installiert haben, damit die Schildkröten-Grafik funktioniert. Seien Sie gewarnt, dass dies nicht immer einfach ist, prüfen Sie dies also im Voraus, wenn Sie planen, Schildkröten-Grafik mit einem Lernenden zu verwenden.
Automatisches Starten und Beenden des Füllens¶
Ab Python 3.14 können Sie den fill() Context Manager anstelle von begin_fill() und end_fill() verwenden, um das Füllen automatisch zu starten und zu beenden. Hier ist ein Beispiel:
with fill():
for i in range(4):
forward(100)
right(90)
forward(200)
Der obige Code ist äquivalent zu:
begin_fill()
for i in range(4):
forward(100)
right(90)
end_fill()
forward(200)
Verwenden des turtle Modul-Namensraums¶
Die Verwendung von from turtle import * ist praktisch – aber Vorsicht, dies importiert eine ziemlich große Sammlung von Objekten, und wenn Sie etwas anderes als Schildkröten-Grafik tun, riskieren Sie Namenskonflikte (dies wird umso problematischer, wenn Sie Schildkröten-Grafik in einem Skript verwenden, in dem andere Module importiert werden könnten).
Die Lösung ist die Verwendung von import turtle – fd() wird zu turtle.fd(), width() wird zu turtle.width() und so weiter. (Wenn das wiederholte Tippen von „turtle“ mühsam wird, verwenden Sie stattdessen z. B. import turtle as t.)
Schildkröten-Grafik in einem Skript verwenden¶
Es wird empfohlen, den turtle Modul-Namensraum wie oben beschrieben zu verwenden, zum Beispiel:
import turtle as t
from random import random
for i in range(100):
steps = int(random() * 100)
angle = int(random() * 360)
t.right(angle)
t.fd(steps)
Ein weiterer Schritt ist jedoch erforderlich – sobald das Skript endet, schließt Python auch das Fenster der Schildkröte. Fügen Sie hinzu:
t.mainloop()
am Ende des Skripts. Das Skript wartet nun auf die Bestätigung und wird nicht beendet, bis es abgebrochen wird, z. B. durch Schließen des Schildkröten-Grafikfensters.
Objektorientierte Schildkröten-Grafik verwenden¶
Außer für sehr grundlegende Einführungsvorhaben oder zum schnellen Ausprobieren ist es üblicher und wesentlich leistungsfähiger, den objektorientierten Ansatz für die Schildkröten-Grafik zu verwenden. So können beispielsweise mehrere Schildkröten gleichzeitig auf dem Bildschirm angezeigt werden.
Bei diesem Ansatz sind die verschiedenen Schildkrötenbefehle Methoden von Objekten (meist von Turtle-Objekten). Sie *können* den objektorientierten Ansatz in der Shell verwenden, aber er wäre typischer in einem Python-Skript.
Das obige Beispiel wird dann zu:
from turtle import Turtle
from random import random
t = Turtle()
for i in range(100):
steps = int(random() * 100)
angle = int(random() * 360)
t.right(angle)
t.fd(steps)
t.screen.mainloop()
Beachten Sie die letzte Zeile. t.screen ist eine Instanz von Screen, auf der eine Turtle-Instanz existiert; sie wird automatisch zusammen mit der Schildkröte erstellt.
Der Schildkrötenbildschirm kann angepasst werden, zum Beispiel:
t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")
Schildkröten-Grafik Referenz¶
Hinweis
In der folgenden Dokumentation ist die Argumentliste für Funktionen angegeben. Methoden haben natürlich das zusätzliche erste Argument *self*, das hier weggelassen wird.
Turtle-Methoden¶
- Turtle-Bewegung
- Bewegen und Zeichnen
- Turtle-Zustand abfragen
- Einstellungen und Messungen
- Stiftsteuerung
- Zeichenzustand
- Farbsteuerung
- Füllung
- Weitere Zeichensteuerung
- Turtle-Zustand
- Sichtbarkeit
- Erscheinungsbild
- Ereignisse verwenden
- Spezielle Turtle-Methoden
Methoden von TurtleScreen/Screen¶
- Fenstersteuerung
- Animationssteuerung
- Bildschirmaereignisse verwenden
- Einstellungen und spezielle Methoden
- Eingabemethoden
- Spezielle Methoden für Screen
Methoden von RawTurtle/Turtle und entsprechende Funktionen¶
Die meisten Beispiele in diesem Abschnitt beziehen sich auf eine Turtle-Instanz namens turtle.
Turtle-Bewegung¶
- turtle.forward(distance)¶
- turtle.fd(distance)¶
- Parameter:
distance – eine Zahl (Ganzzahl oder Gleitkommazahl)
Bewegen Sie die Schildkröte um die angegebene *distance* vorwärts, in der Richtung, in die die Schildkröte blickt.
>>> turtle.position() (0.00,0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00)
- turtle.back(distance)¶
- turtle.bk(distance)¶
- turtle.backward(distance)¶
- Parameter:
distance – eine Zahl
Bewegen Sie die Schildkröte um *distance* rückwärts, entgegen der Richtung, in die die Schildkröte blickt. Ändern Sie nicht die Blickrichtung der Schildkröte.
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
- turtle.right(angle)¶
- turtle.rt(angle)¶
- Parameter:
angle – eine Zahl (Ganzzahl oder Gleitkommazahl)
Drehen Sie die Schildkröte um *angle* Einheiten nach rechts. (Einheiten sind standardmäßig Grad, können aber über die Funktionen
degrees()undradians()gesetzt werden.) Die Winkelorientierung hängt vom Schildkrötenmodus ab, siehemode().>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
- turtle.left(angle)¶
- turtle.lt(angle)¶
- Parameter:
angle – eine Zahl (Ganzzahl oder Gleitkommazahl)
Drehen Sie die Schildkröte um *angle* Einheiten nach links. (Einheiten sind standardmäßig Grad, können aber über die Funktionen
degrees()undradians()gesetzt werden.) Die Winkelorientierung hängt vom Schildkrötenmodus ab, siehemode().>>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0
- turtle.goto(x, y=None)¶
- turtle.setpos(x, y=None)¶
- turtle.setposition(x, y=None)¶
- Parameter:
x – eine Zahl oder ein Paar/Vektor von Zahlen
y – eine Zahl oder
None
Wenn *y*
Noneist, muss *x* ein Koordinatenpaar oder einVec2D(z. B. wie vonpos()zurückgegeben) sein.Bewegen Sie die Schildkröte zu einer absoluten Position. Wenn der Stift unten ist, zeichnen Sie eine Linie. Ändern Sie nicht die Ausrichtung der Schildkröte.
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00)
- turtle.teleport(x, y=None, *, fill_gap=False)¶
- Parameter:
x – eine Zahl oder
Noney – eine Zahl oder
Nonefill_gap – ein Boolescher Wert
Bewegen Sie die Schildkröte zu einer absoluten Position. Im Gegensatz zu goto(x, y) wird keine Linie gezeichnet. Die Ausrichtung der Schildkröte ändert sich nicht. Wenn gerade gefüllt wird, werden die Polygon(e), von denen teleportiert wurde, nach dem Verlassen gefüllt, und das Füllen beginnt nach dem Teleportieren erneut. Dies kann mit fill_gap=True deaktiviert werden, was die imaginäre Linie, die während des Teleportierens durchlaufen wird, als Füllbarriere wie bei goto(x, y) wirken lässt.
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.teleport(60) >>> turtle.pos() (60.00,0.00) >>> turtle.teleport(y=10) >>> turtle.pos() (60.00,10.00) >>> turtle.teleport(20, 30) >>> turtle.pos() (20.00,30.00)
Hinzugefügt in Version 3.12.
- turtle.setx(x)¶
- Parameter:
x – eine Zahl (Ganzzahl oder Gleitkommazahl)
Setzen Sie die erste Koordinate der Schildkröte auf *x*, lassen Sie die zweite Koordinate unverändert.
>>> turtle.position() (0.00,240.00) >>> turtle.setx(10) >>> turtle.position() (10.00,240.00)
- turtle.sety(y)¶
- Parameter:
y – eine Zahl (Ganzzahl oder Gleitkommazahl)
Setzen Sie die zweite Koordinate der Schildkröte auf *y*, lassen Sie die erste Koordinate unverändert.
>>> turtle.position() (0.00,40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00,-10.00)
- turtle.setheading(to_angle)¶
- turtle.seth(to_angle)¶
- Parameter:
to_angle – eine Zahl (Ganzzahl oder Gleitkommazahl)
Setzen Sie die Ausrichtung der Schildkröte auf *to_angle*. Hier sind einige gängige Richtungen in Grad:
Standardmodus
Logo-Modus
0 - Ost
0 - Nord
90 - Nord
90 - Ost
180 - West
180 - Süd
270 - Süd
270 - West
>>> turtle.setheading(90) >>> turtle.heading() 90.0
- turtle.home()¶
Bewegen Sie die Schildkröte zum Ursprung – Koordinaten (0,0) – und setzen Sie ihre Ausrichtung auf die Startorientierung (die vom Modus abhängt, siehe
mode()).>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
- turtle.circle(radius, extent=None, steps=None)¶
- Parameter:
radius – eine Zahl
extent – eine Zahl (oder
None)steps – eine Ganzzahl (oder
None)
Zeichnen Sie einen Kreis mit dem angegebenen *radius*. Das Zentrum liegt *radius* Einheiten links von der Schildkröte; *extent* – ein Winkel – bestimmt, welcher Teil des Kreises gezeichnet wird. Wenn *extent* nicht angegeben ist, wird der gesamte Kreis gezeichnet. Wenn *extent* kein voller Kreis ist, ist ein Endpunkt des Bogens die aktuelle Stiftposition. Zeichnen Sie den Bogen gegen den Uhrzeigersinn, wenn *radius* positiv ist, andernfalls im Uhrzeigersinn. Schließlich wird die Richtung der Schildkröte um den Betrag von *extent* geändert.
Da der Kreis durch ein einbeschriebenes regelmäßiges Polygon angenähert wird, bestimmt *steps* die Anzahl der zu verwendenden Schritte. Wenn nicht angegeben, wird er automatisch berechnet. Kann zum Zeichnen von regelmäßigen Polygonen verwendet werden.
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # draw a semicircle >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
- turtle.dot()¶
- turtle.dot(size)
- turtle.dot(color, /)
- turtle.dot(size, color, /)
- turtle.dot(size, r, g, b, /)
- Parameter:
size – eine Ganzzahl >= 1 (falls angegeben)
color – ein Farbstring oder ein numerisches Farb-Tupel
Zeichnet einen kreisförmigen Punkt mit dem Durchmesser size und der Farbe color. Wenn size nicht angegeben ist, wird das Maximum von
pensize+4und2*pensizeverwendet.>>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() (100.00,-0.00) >>> turtle.heading() 0.0
- turtle.stamp()¶
Stempelt eine Kopie der Schildkrötenform auf die Zeichenfläche an der aktuellen Schildkrötenposition. Gibt eine stamp_id für diesen Stempel zurück, die verwendet werden kann, um ihn durch Aufrufen von
clearstamp(stamp_id)zu löschen.>>> turtle.color("blue") >>> stamp_id = turtle.stamp() >>> turtle.fd(50)
- turtle.clearstamp(stampid)¶
- Parameter:
stampid – eine Ganzzahl, muss der Rückgabewert eines früheren
stamp()-Aufrufs sein.
Löscht den Stempel mit der angegebenen stampid.
>>> turtle.position() (150.00,-0.00) >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.position() (200.00,-0.00) >>> turtle.clearstamp(astamp) >>> turtle.position() (200.00,-0.00)
- turtle.clearstamps(n=None)¶
- Parameter:
n – eine Ganzzahl (oder
None)
Löscht alle oder die ersten/letzten n Stempel der Schildkröte. Wenn n
Noneist, werden alle Stempel gelöscht. Wenn n > 0, werden die ersten n Stempel gelöscht. Andernfalls, wenn n < 0, werden die letzten n Stempel gelöscht.>>> for i in range(8): ... unused_stamp_id = turtle.stamp() ... turtle.fd(30) >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
- turtle.undo()¶
Macht die letzte(n) Schildkrötenaktion(en) rückgängig (wiederholt). Die Anzahl der verfügbaren Rückgängig-Aktionen wird durch die Größe des Undo-Puffers bestimmt.
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
- turtle.speed(speed=None)¶
- Parameter:
speed – eine Ganzzahl im Bereich 0..10 oder ein Geschwindigkeitsstring (siehe unten)
Setzt die Geschwindigkeit der Schildkröte auf einen Ganzzahlwert im Bereich 0..10. Wenn kein Argument angegeben ist, wird die aktuelle Geschwindigkeit zurückgegeben.
Wenn die Eingabe eine Zahl größer als 10 oder kleiner als 0,5 ist, wird die Geschwindigkeit auf 0 gesetzt. Geschwindigkeitsstrings werden wie folgt zu Geschwindigkeitswerten zugeordnet:
“fastest”: 0
“fast”: 10
“normal”: 6
“slow”: 3
“slowest”: 1
Geschwindigkeiten von 1 bis 10 erzwingen zunehmend schnellere Animationen beim Zeichnen von Linien und Drehen der Schildkröte.
Achtung: speed = 0 bedeutet, dass keine Animation stattfindet. forward/back lässt die Schildkröte springen und ebenfalls left/right lässt die Schildkröte sofort drehen.
>>> turtle.speed() 3 >>> turtle.speed('normal') >>> turtle.speed() 6 >>> turtle.speed(9) >>> turtle.speed() 9
Zustand der Schildkröte abfragen¶
- turtle.position()¶
- turtle.pos()¶
Gibt die aktuelle Position (x,y) der Schildkröte zurück (als
Vec2D-Vektor).>>> turtle.pos() (440.00,-0.00)
- turtle.towards(x, y=None)¶
- Parameter:
x – eine Zahl oder ein Paar/Vektor von Zahlen oder eine Schildkröteninstanz
y – eine Zahl, wenn x eine Zahl ist, sonst
None
Gibt den Winkel zwischen der Linie von der Position der Schildkröte zur durch (x,y) gegebenen Position, dem Vektor oder der anderen Schildkröte zurück. Dies hängt von der Startausrichtung der Schildkröte ab, die vom Modus abhängt – „standard“/„world“ oder „logo“.
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
- turtle.xcor()¶
Gibt die x-Koordinate der Schildkröte zurück.
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
- turtle.ycor()¶
Gibt die y-Koordinate der Schildkröte zurück.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
- turtle.heading()¶
Gibt die aktuelle Ausrichtung der Schildkröte zurück (Wert hängt vom Schildkrötenmodus ab, siehe
mode()).>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
- turtle.distance(x, y=None)¶
- Parameter:
x – eine Zahl oder ein Paar/Vektor von Zahlen oder eine Schildkröteninstanz
y – eine Zahl, wenn x eine Zahl ist, sonst
None
Gibt die Entfernung von der Schildkröte zu (x,y), dem gegebenen Vektor oder der anderen Schildkröte in Schildkrötenschritt-Einheiten zurück.
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
Einstellungen für Messung¶
- turtle.degrees(fullcircle=360.0)¶
- Parameter:
fullcircle – eine Zahl
Legt die Einheiten für die Winkelmessung fest, d. h. legt die Anzahl der „Grad“ für einen vollen Kreis fest. Der Standardwert ist 360 Grad.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> # Change angle measurement unit to grad (also known as gon, >>> # grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
- turtle.radians()¶
Legt die Einheiten für die Winkelmessung auf Radiant fest. Entspricht
degrees(2*math.pi).>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
Stiftsteuerung¶
Zeichenzustand¶
- turtle.pensize(width=None)¶
- turtle.width(width=None)¶
- Parameter:
width – eine positive Zahl
Setzt die Liniendicke auf width oder gibt sie zurück. Wenn resizemode auf „auto“ gesetzt ist und die Schildkrötenform ein Polygon ist, wird dieses Polygon mit derselben Liniendicke gezeichnet. Wenn kein Argument angegeben ist, wird die aktuelle Stiftdicke zurückgegeben.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
- turtle.pen(pen=None, **pendict)¶
- Parameter:
pen – ein Wörterbuch mit einigen oder allen der unten aufgeführten Schlüssel
pendict – ein oder mehrere Schlüsselwortargumente mit den unten aufgeführten Schlüsseln als Schlüsselwörter
Gibt die Attribute des Stifts als „Stift-Wörterbuch“ zurück oder setzt sie. Das Wörterbuch enthält die folgenden Schlüssel/Wert-Paare:
„shown“: True/False
„pendown“: True/False
„pencolor“: Farbstring oder Farb-Tupel
„fillcolor“: Farbstring oder Farb-Tupel
„pensize“: positive Zahl
„speed“: Zahl im Bereich 0..10
„resizemode“: „auto“ oder „user“ oder „noresize“
„stretchfactor“: (positive Zahl, positive Zahl)
„outline“: positive Zahl
„tilt“: Zahl
Dieses Wörterbuch kann als Argument für einen nachfolgenden Aufruf von
pen()verwendet werden, um den vorherigen Stiftzustand wiederherzustellen. Darüber hinaus können ein oder mehrere dieser Attribute als Schlüsselwortargumente übergeben werden. Dies kann verwendet werden, um mehrere Stiftattribute in einer Anweisung festzulegen.>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> sorted(turtle.pen().items()) [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shearfactor', 0.0), ('shown', True), ('speed', 9), ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)] >>> penstate=turtle.pen() >>> turtle.color("yellow", "") >>> turtle.penup() >>> sorted(turtle.pen().items())[:3] [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')] >>> turtle.pen(penstate, fillcolor="green") >>> sorted(turtle.pen().items())[:3] [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
- turtle.isdown()¶
Gibt
Truezurück, wenn der Stift unten ist,False, wenn er oben ist.>>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True
Farbsteuerung¶
- turtle.pencolor()¶
- turtle.pencolor(color, /)
- turtle.pencolor(r, g, b, /)
Gibt die Stiftfarbe zurück oder setzt sie.
Vier Eingabeformate sind erlaubt:
pencolor()Gibt die aktuelle Stiftfarbe als Farbspezifikationsstring oder als Tupel (siehe Beispiel) zurück. Kann als Eingabe für einen anderen Farb-/Stift-/Füll-/Hintergrundfarbaufruf verwendet werden.
pencolor(colorstring)Setzt die Stiftfarbe auf colorstring, einem Tk-Farbspezifikationsstring, wie z. B.
"red","yellow"oder"#33cc8c".pencolor((r, g, b))Setzt die Stiftfarbe auf die durch das Tupel r, g und b dargestellte RGB-Farbe. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen, wobei colormode entweder 1.0 oder 255 ist (siehe
colormode()).pencolor(r, g, b)Setzt die Stiftfarbe auf die durch r, g und b dargestellte RGB-Farbe. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen.
Wenn die Schildkrötenform ein Polygon ist, wird die Umrandung dieses Polygons mit der neu eingestellten Stiftfarbe gezeichnet.
>>> colormode() 1.0 >>> turtle.pencolor() 'red' >>> turtle.pencolor("brown") >>> turtle.pencolor() 'brown' >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() (0.2, 0.8, 0.5490196078431373) >>> colormode(255) >>> turtle.pencolor() (51.0, 204.0, 140.0) >>> turtle.pencolor('#32c18f') >>> turtle.pencolor() (50.0, 193.0, 143.0)
- turtle.fillcolor()¶
- turtle.fillcolor(color, /)
- turtle.fillcolor(r, g, b, /)
Gibt die Füllfarbe zurück oder setzt sie.
Vier Eingabeformate sind erlaubt:
fillcolor()Gibt die aktuelle Füllfarbe als Farbspezifikationsstring zurück, möglicherweise im Tupelformat (siehe Beispiel). Kann als Eingabe für einen anderen Farb-/Stift-/Füll-/Hintergrundfarbaufruf verwendet werden.
fillcolor(colorstring)Setzt die Füllfarbe auf colorstring, einem Tk-Farbspezifikationsstring, wie z. B.
"red","yellow"oder"#33cc8c".fillcolor((r, g, b))Setzt die Füllfarbe auf die durch das Tupel r, g und b dargestellte RGB-Farbe. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen, wobei colormode entweder 1.0 oder 255 ist (siehe
colormode()).fillcolor(r, g, b)Setzt die Füllfarbe auf die durch r, g und b dargestellte RGB-Farbe. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen.
Wenn die Schildkrötenform ein Polygon ist, wird das Innere dieses Polygons mit der neu eingestellten Füllfarbe gefüllt.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Integers, not floats >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0)
- turtle.color()¶
- turtle.color(color, /)
- turtle.color(r, g, b, /)
- turtle.color(pencolor, fillcolor, /)
Gibt die Stift- und Füllfarbe zurück oder setzt sie.
Mehrere Eingabeformate sind erlaubt. Sie verwenden 0 bis 3 Argumente wie folgt:
color()Gibt die aktuelle Stiftfarbe und die aktuelle Füllfarbe als ein Paar von Farbspezifikationsstrings oder Tupeln zurück, wie von
pencolor()undfillcolor()zurückgegeben.color(colorstring),color((r,g,b)),color(r,g,b)Eingaben wie in
pencolor(), setzt sowohl Füllfarbe als auch Stiftfarbe auf den gegebenen Wert.color(colorstring1, colorstring2),color((r1,g1,b1), (r2,g2,b2))Entspricht
pencolor(colorstring1)undfillcolor(colorstring2)und analog, wenn das andere Eingabeformat verwendet wird.
Wenn die Schildkrötenform ein Polygon ist, werden die Umrandung und das Innere dieses Polygons mit den neu eingestellten Farben gezeichnet.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))
Siehe auch: Bildschirm-Methode colormode().
Füllen¶
- turtle.filling()¶
Gibt den Füllstatus zurück (
Truewenn gerade gefüllt wird,Falsesonst).>>> turtle.begin_fill() >>> if turtle.filling(): ... turtle.pensize(5) ... else: ... turtle.pensize(3)
- turtle.fill()¶
Füllt die im
with turtle.fill():-Block gezeichnete Form.>>> turtle.color("black", "red") >>> with turtle.fill(): ... turtle.circle(80)
Die Verwendung von
fill()ist äquivalent zum Einfügen vonbegin_fill()vor dem Füllblock undend_fill()nach dem Füllblock.>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
Hinzugefügt in Version 3.14.
- turtle.begin_fill()¶
Sollte direkt vor dem Zeichnen einer zu füllenden Form aufgerufen werden.
- turtle.end_fill()¶
Füllt die Form, die nach dem letzten Aufruf von
begin_fill()gezeichnet wurde.Ob sich überlappende Bereiche für selbstschneidende Polygone oder mehrere Formen gefüllt werden, hängt von der Grafik des Betriebssystems, der Art der Überlappung und der Anzahl der Überlappungen ab. Zum Beispiel kann der Schildkrötenstern oben entweder ganz gelb sein oder einige weiße Bereiche aufweisen.
>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
Weitere Zeichensteuerung¶
- turtle.reset()¶
Löscht die Zeichnungen der Schildkröte vom Bildschirm, zentriert die Schildkröte neu und setzt die Variablen auf die Standardwerte.
>>> turtle.goto(0,-22) >>> turtle.left(100) >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
- turtle.clear()¶
Löscht die Zeichnungen der Schildkröte vom Bildschirm. Die Schildkröte wird nicht bewegt. Der Zustand und die Position der Schildkröte sowie die Zeichnungen anderer Schildkröten bleiben unberührt.
- turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))¶
- Parameter:
arg – Objekt, das auf den TurtleScreen geschrieben werden soll
move – True/False
align – einer der Strings „left“, „center“ oder „right“
font – ein Tupel (Schriftartname, Schriftgröße, Schriftstil)
Schreibt Text – die String-Darstellung von arg – an der aktuellen Schildkrötenposition gemäß align („left“, „center“ oder „right“) und mit der angegebenen Schriftart. Wenn move True ist, wird der Stift zur unteren rechten Ecke des Textes bewegt. Standardmäßig ist move
False.>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
Zustand der Schildkröte¶
Sichtbarkeit¶
- turtle.hideturtle()¶
- turtle.ht()¶
Macht die Schildkröte unsichtbar. Es ist ratsam, dies zu tun, wenn Sie gerade komplexe Zeichnungen erstellen, da das Ausblenden der Schildkröte die Zeichengeschwindigkeit merklich erhöht.
>>> turtle.hideturtle()
- turtle.isvisible()¶
Gibt
Truezurück, wenn die Schildkröte angezeigt wird,False, wenn sie ausgeblendet ist.>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
Aussehen¶
- turtle.shape(name=None)¶
- Parameter:
name – ein String, der ein gültiger Shapename ist
Setzt die Schildkrötenform auf die Form mit dem angegebenen name oder, wenn name nicht angegeben ist, gibt den Namen der aktuellen Form zurück. Die Form mit name muss im Shape-Dictionary des TurtleScreens existieren. Anfangs gibt es die folgenden Polygonformen: „arrow“, „turtle“, „circle“, „square“, „triangle“, „classic“. Wie man mit Formen umgeht, erfahren Sie in der Bildschirm-Methode
register_shape().>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
- turtle.resizemode(rmode=None)¶
- Parameter:
rmode – einer der Strings „auto“, „user“, „noresize“
Setzt den Resizemodus auf einen der Werte: „auto“, „user“, „noresize“. Wenn rmode nicht angegeben ist, wird der aktuelle Resizemodus zurückgegeben. Unterschiedliche Resizemodi haben folgende Auswirkungen:
„auto“: passt das Aussehen der Schildkröte an den Wert von pensize an.
„user“: passt das Aussehen der Schildkröte entsprechend den Werten von stretchfactor und outlinewidth (outline) an, die durch
shapesize()festgelegt werden.„noresize“: keine Anpassung des Erscheinungsbildes der Schildkröte erfolgt.
resizemode("user")wird vonshapesize()aufgerufen, wenn es mit Argumenten verwendet wird.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
- turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)¶
- turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)¶
- Parameter:
stretch_wid – positive Zahl
stretch_len – positive Zahl
outline – positive Zahl
Gibt die x/y-Dehnfaktoren und/oder die Umrisslinie des Stifts zurück oder setzt sie. Setzt den Resizemodus auf „user“. Nur wenn der Resizemodus auf „user“ gesetzt ist, wird die Schildkröte entsprechend ihrer Dehnfaktoren gestreckt dargestellt: stretch_wid ist der Dehnfaktor senkrecht zu ihrer Ausrichtung, stretch_len ist der Dehnfaktor in Richtung ihrer Ausrichtung, outline bestimmt die Dicke der Umrandung der Form.
>>> turtle.shapesize() (1.0, 1.0, 1) >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize() (5, 5, 12) >>> turtle.shapesize(outline=8) >>> turtle.shapesize() (5, 5, 8)
- turtle.shearfactor(shear=None)¶
- Parameter:
shear – Zahl (optional)
Setzt oder gibt den aktuellen Schiebungfaktor zurück. Schert die Schildkrötenform entsprechend dem gegebenen Schiebungfaktor shear, der der Tangens des Schiebungwinkels ist. Ändert die Ausrichtung der Schildkröte (Bewegungsrichtung) nicht. Wenn shear nicht angegeben ist: gibt den aktuellen Schiebungfaktor zurück, d. h. den Tangens des Schiebungwinkels, um den Linien parallel zur Ausrichtung der Schildkröte verschoben werden.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
- turtle.tilt(angle)¶
- Parameter:
angle – eine Zahl
Dreht die Schildkrötenform um angle vom aktuellen Kippwinkel, ändert aber die Ausrichtung der Schildkröte (Bewegungsrichtung) nicht.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50)
- turtle.tiltangle(angle=None)¶
- Parameter:
angle – eine Zahl (optional)
Setzt oder gibt den aktuellen Kippwinkel zurück. Wenn angle angegeben ist, wird die Schildkrötenform so gedreht, dass sie in die durch angle angegebene Richtung zeigt, unabhängig von ihrem aktuellen Kippwinkel. Ändert die Ausrichtung der Schildkröte (Bewegungsrichtung) nicht. Wenn angle nicht angegeben ist: gibt den aktuellen Kippwinkel zurück, d. h. den Winkel zwischen der Ausrichtung der Schildkrötenform und der Ausrichtung der Schildkröte (ihre Bewegungsrichtung).
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
- turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)¶
- Parameter:
t11 – eine Zahl (optional)
t12 – eine Zahl (optional)
t21 – eine Zahl (optional)
t12 – eine Zahl (optional)
Setzt oder gibt die aktuelle Transformationsmatrix der Turtle-Form zurück.
Wenn keine der Matrixelemente gegeben sind, wird die Transformationsmatrix als Tupel von 4 Elementen zurückgegeben. Andernfalls werden die gegebenen Elemente gesetzt und die Turtle-Form entsprechend der Matrix, die aus der ersten Zeile t11, t12 und der zweiten Zeile t21, t22 besteht, transformiert. Die Determinante t11 * t22 - t12 * t21 darf nicht Null sein, da sonst ein Fehler ausgelöst wird. Streckfaktor, Scherfaktor und Kippwinkel werden entsprechend der gegebenen Matrix modifiziert.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
- turtle.get_shapepoly()¶
Gibt das aktuelle Form-Polygon als Tupel von Koordinatenpaaren zurück. Dies kann zur Definition einer neuen Form oder von Komponenten einer zusammengesetzten Form verwendet werden.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
Verwendung von Ereignissen¶
- turtle.onclick(fun, btn=1, add=None)
- Parameter:
fun – eine Funktion mit zwei Argumenten, die mit den Koordinaten des angeklickten Punktes auf der Zeichenfläche aufgerufen wird
btn – Nummer der Maustaste, Standard ist 1 (linke Maustaste)
add –
TrueoderFalse– wennTrue, wird eine neue Bindung hinzugefügt, andernfalls ersetzt sie eine frühere Bindung
Bindet fun an Mausklick-Ereignisse auf dieser Turtle. Wenn fun
Noneist, werden bestehende Bindungen entfernt. Beispiel für die anonyme Turtle, d.h. die prozedurale Methode>>> def turn(x, y): ... left(180) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed
- turtle.onrelease(fun, btn=1, add=None)¶
- Parameter:
fun – eine Funktion mit zwei Argumenten, die mit den Koordinaten des angeklickten Punktes auf der Zeichenfläche aufgerufen wird
btn – Nummer der Maustaste, Standard ist 1 (linke Maustaste)
add –
TrueoderFalse– wennTrue, wird eine neue Bindung hinzugefügt, andernfalls ersetzt sie eine frühere Bindung
Bindet fun an Maustasten-Loslass-Ereignisse auf dieser Turtle. Wenn fun
Noneist, werden bestehende Bindungen entfernt.>>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> turtle = MyTurtle() >>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor red, >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
- turtle.ondrag(fun, btn=1, add=None)¶
- Parameter:
fun – eine Funktion mit zwei Argumenten, die mit den Koordinaten des angeklickten Punktes auf der Zeichenfläche aufgerufen wird
btn – Nummer der Maustaste, Standard ist 1 (linke Maustaste)
add –
TrueoderFalse– wennTrue, wird eine neue Bindung hinzugefügt, andernfalls ersetzt sie eine frühere Bindung
Bindet fun an Mausbewegungs-Ereignisse auf dieser Turtle. Wenn fun
Noneist, werden bestehende Bindungen entfernt.Hinweis: Jede Sequenz von Mausbewegungsereignissen auf einer Turtle wird einem Mausklickereignis auf dieser Turtle vorausgehen.
>>> turtle.ondrag(turtle.goto)
Anschließendes Klicken und Ziehen der Turtle bewegt sie über den Bildschirm und erzeugt dabei Handzeichnungen (wenn der Stift unten ist).
Spezielle Turtle-Methoden¶
- turtle.poly()¶
Zeichnet die Eckpunkte eines Polygons, das im
with turtle.poly():Block gezeichnet wurde. Der erste und letzte Eckpunkt werden verbunden.>>> with turtle.poly(): ... turtle.forward(100) ... turtle.right(60) ... turtle.forward(100)
Hinzugefügt in Version 3.14.
- turtle.begin_poly()¶
Beginnt die Aufzeichnung der Eckpunkte eines Polygons. Die aktuelle Position der Turtle ist der erste Eckpunkt des Polygons.
- turtle.end_poly()¶
Beendet die Aufzeichnung der Eckpunkte eines Polygons. Die aktuelle Position der Turtle ist der letzte Eckpunkt des Polygons. Dieser wird mit dem ersten Eckpunkt verbunden.
- turtle.get_poly()¶
Gibt das zuletzt aufgezeichnete Polygon zurück.
>>> turtle.home() >>> turtle.begin_poly() >>> turtle.fd(100) >>> turtle.left(20) >>> turtle.fd(30) >>> turtle.left(60) >>> turtle.fd(50) >>> turtle.end_poly() >>> p = turtle.get_poly() >>> register_shape("myFavouriteShape", p)
- turtle.clone()¶
Erstellt und gibt eine Kopie der Turtle mit gleicher Position, Ausrichtung und Turtle-Eigenschaften zurück.
>>> mick = Turtle() >>> joe = mick.clone()
- turtle.getturtle()¶
- turtle.getpen()¶
Gibt das Turtle-Objekt selbst zurück. Nur sinnvolle Verwendung: als Funktion, um die "anonyme Turtle" zurückzugeben.
>>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x...>
- turtle.getscreen()¶
Gibt das
TurtleScreen-Objekt zurück, auf dem die Turtle zeichnet. TurtleScreen-Methoden können dann für dieses Objekt aufgerufen werden.>>> ts = turtle.getscreen() >>> ts <turtle._Screen object at 0x...> >>> ts.bgcolor("pink")
- turtle.setundobuffer(size)¶
- Parameter:
size – eine Ganzzahl oder
None
Setzt oder deaktiviert den Undo-Puffer. Wenn size eine Ganzzahl ist, wird ein leerer Undo-Puffer mit der gegebenen Größe installiert. size gibt die maximale Anzahl von Turtle-Aktionen an, die mit der
undo()-Methode/Funktion rückgängig gemacht werden können. Wenn sizeNoneist, wird der Undo-Puffer deaktiviert.>>> turtle.setundobuffer(42)
- turtle.undobufferentries()¶
Gibt die Anzahl der Einträge im Undo-Puffer zurück.
>>> while undobufferentries(): ... undo()
Zusammengesetzte Formen¶
Um zusammengesetzte Turtle-Formen zu verwenden, die aus mehreren Polygonen unterschiedlicher Farbe bestehen, müssen Sie die Hilfsklasse Shape explizit wie unten beschrieben verwenden
Erstellt ein leeres Shape-Objekt vom Typ "compound".
Fügt diesem Objekt so viele Komponenten wie gewünscht hinzu, indem die Methode
addcomponent()verwendet wird.Zum Beispiel
>>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s.addcomponent(poly1, "red", "blue") >>> poly2 = ((0,0),(10,-5),(-10,-5)) >>> s.addcomponent(poly2, "blue", "red")
Fügen Sie nun die Form zur Shapelist des Screens hinzu und verwenden Sie sie
>>> register_shape("myshape", s) >>> shape("myshape")
Hinweis
Die Klasse Shape wird intern von der Methode register_shape() in verschiedenen Weisen verwendet. Der Anwendungsentwickler muss sich nur dann mit der Shape-Klasse befassen, wenn er zusammengesetzte Formen wie oben gezeigt verwendet!
Methoden von TurtleScreen/Screen und entsprechende Funktionen¶
Die meisten Beispiele in diesem Abschnitt beziehen sich auf eine TurtleScreen-Instanz namens screen.
Fenstersteuerung¶
- turtle.bgcolor()¶
- turtle.bgcolor(color, /)
- turtle.bgcolor(r, g, b, /)
Gibt die Hintergrundfarbe des TurtleScreens zurück oder setzt sie.
Vier Eingabeformate sind erlaubt:
bgcolor()Gibt die aktuelle Hintergrundfarbe als Farb-Spezifikationsstring oder als Tupel zurück (siehe Beispiel). Kann als Eingabe für einen anderen Farb-/pencolor-/fillcolor-/bgcolor-Aufruf verwendet werden.
bgcolor(colorstring)Setzt die Hintergrundfarbe auf colorstring, einen Tk-Farb-Spezifikationsstring wie
"red","yellow"oder"#33cc8c".bgcolor((r, g, b))Setzt die Hintergrundfarbe auf die RGB-Farbe, die durch das Tupel von r, g und b dargestellt wird. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen, wobei colormode entweder 1.0 oder 255 ist (siehe
colormode()).bgcolor(r, g, b)Setzt die Hintergrundfarbe auf die RGB-Farbe, die durch r, g und b dargestellt wird. Jeder Wert von r, g und b muss im Bereich 0..colormode liegen.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
- turtle.bgpic(picname=None)¶
- Parameter:
picname – ein String, der Name einer Bilddatei (PNG, GIF, PGM und PPM) oder
"nopic", oderNone
Setzt das Hintergrundbild oder gibt den Namen des aktuellen Hintergrundbilds zurück. Wenn picname ein Dateiname ist, wird das entsprechende Bild als Hintergrund gesetzt. Wenn picname
"nopic"ist, wird das Hintergrundbild gelöscht, falls vorhanden. Wenn picnameNoneist, wird der Dateiname des aktuellen Hintergrundbilds zurückgegeben.>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
- turtle.clear()
Hinweis
Diese TurtleScreen-Methode ist nur unter dem Namen
clearscreenals globale Funktion verfügbar. Die globale Funktionclearist eine andere, abgeleitet von der Turtle-Methodeclear.
- turtle.clearscreen()¶
Löscht alle Zeichnungen und alle Turtles vom TurtleScreen. Setzt den nun leeren TurtleScreen in seinen Ausgangszustand zurück: weißer Hintergrund, kein Hintergrundbild, keine Ereignisbindungen und aktiver Tracing.
- turtle.reset()
Hinweis
Diese TurtleScreen-Methode ist nur unter dem Namen
resetscreenals globale Funktion verfügbar. Die globale Funktionresetist eine andere, abgeleitet von der Turtle-Methodereset.
- turtle.resetscreen()¶
Setzt alle Turtles auf dem Bildschirm in ihren Ausgangszustand zurück.
- turtle.screensize(canvwidth=None, canvheight=None, bg=None)¶
- Parameter:
canvwidth – positive Ganzzahl, neue Breite der Zeichenfläche in Pixeln
canvheight – positive Ganzzahl, neue Höhe der Zeichenfläche in Pixeln
bg – Farbstring oder Farb-Tupel, neue Hintergrundfarbe
Wenn keine Argumente gegeben sind, wird die aktuelle (canvaswidth, canvasheight) zurückgegeben. Andernfalls wird die Zeichenfläche, auf der die Turtles zeichnen, vergrößert/verkleinert. Das Zeichenfenster wird dabei nicht verändert. Um verborgene Teile der Zeichenfläche zu sehen, verwenden Sie die Scrollbalken. Mit dieser Methode können Teile einer Zeichnung sichtbar gemacht werden, die sich zuvor außerhalb der Zeichenfläche befanden.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
z.B. um eine fehlerhaft entkommene Turtle zu suchen ;-)
- turtle.setworldcoordinates(llx, lly, urx, ury)¶
- Parameter:
llx – eine Zahl, x-Koordinate der unteren linken Ecke der Zeichenfläche
lly – eine Zahl, y-Koordinate der unteren linken Ecke der Zeichenfläche
urx – eine Zahl, x-Koordinate der oberen rechten Ecke der Zeichenfläche
ury – eine Zahl, y-Koordinate der oberen rechten Ecke der Zeichenfläche
Richtet ein benutzerdefiniertes Koordinatensystem ein und wechselt bei Bedarf in den Modus "world". Dies führt ein
screen.reset()durch. Wenn der Modus "world" bereits aktiv ist, werden alle Zeichnungen entsprechend den neuen Koordinaten neu gezeichnet.ACHTUNG: In benutzerdefinierten Koordinatensystemen können Winkel verzerrt erscheinen.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
Animationssteuerung¶
- turtle.no_animation()¶
Deaktiviert vorübergehend die Turtle-Animation. Der Code, der innerhalb des
no_animation-Blocks geschrieben wird, wird nicht animiert; sobald der Code-Block verlassen wird, erscheint die Zeichnung.>>> with screen.no_animation(): ... for dist in range(2, 400, 2): ... fd(dist) ... rt(90)
Hinzugefügt in Version 3.14.
- turtle.delay(delay=None)¶
- Parameter:
delay – positive Ganzzahl
Setzt oder gibt die Zeichenverzögerung (delay) in Millisekunden zurück. (Dies ist ungefähr das Zeitintervall zwischen zwei aufeinanderfolgenden Aktualisierungen der Zeichenfläche.) Je länger die Zeichenverzögerung, desto langsamer die Animation.
Optionales Argument
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
- turtle.tracer(n=None, delay=None)¶
- Parameter:
n – nicht-negative Ganzzahl
delay – nicht-negative Ganzzahl
Schaltet die Turtle-Animation ein/aus und setzt die Verzögerung für die Aktualisierung von Zeichnungen. Wenn n gegeben ist, wird nur jede n-te reguläre Bildschirmaktualisierung tatsächlich durchgeführt. (Kann zur Beschleunigung der Zeichnung komplexer Grafiken verwendet werden.) Wenn ohne Argumente aufgerufen, wird der aktuell gespeicherte Wert von n zurückgegeben. Das zweite Argument setzt den Verzögerungswert (siehe
delay()).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
- turtle.update()¶
Führt eine TurtleScreen-Aktualisierung durch. Muss verwendet werden, wenn tracer ausgeschaltet ist.
Siehe auch die RawTurtle/Turtle-Methode speed().
Verwendung von Screen-Ereignissen¶
- turtle.listen(xdummy=None, ydummy=None)¶
Setzt den Fokus auf TurtleScreen (um Tastaturereignisse zu erfassen). Dummy-Argumente werden bereitgestellt, um
listen()an die onclick-Methode übergeben zu können.
- turtle.onkey(fun, key)¶
- turtle.onkeyrelease(fun, key)¶
- Parameter:
fun – eine Funktion ohne Argumente oder
Nonekey – ein String: Taste (z.B. „a“) oder Tastensymbol (z.B. „space“)
Bindet fun an das Ereignis des Loslassens der Taste key. Wenn fun
Noneist, werden Ereignisbindungen entfernt. Hinweis: Um Tastenereignisse registrieren zu können, muss TurtleScreen den Fokus haben. (Siehe Methodelisten().)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- turtle.onkeypress(fun, key=None)¶
- Parameter:
fun – eine Funktion ohne Argumente oder
Nonekey – ein String: Taste (z.B. „a“) oder Tastensymbol (z.B. „space“)
Bindet fun an das Tastendruckereignis von key, wenn key gegeben ist, oder an jedes Tastendruckereignis, wenn kein key gegeben ist. Hinweis: Um Tastenereignisse registrieren zu können, muss TurtleScreen den Fokus haben. (Siehe Methode
listen().)>>> def f(): ... fd(50) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- turtle.onclick(fun, btn=1, add=None)¶
- turtle.onscreenclick(fun, btn=1, add=None)¶
- Parameter:
fun – eine Funktion mit zwei Argumenten, die mit den Koordinaten des angeklickten Punktes auf der Zeichenfläche aufgerufen wird
btn – Nummer der Maustaste, Standard ist 1 (linke Maustaste)
add –
TrueoderFalse– wennTrue, wird eine neue Bindung hinzugefügt, andernfalls ersetzt sie eine frühere Bindung
Bindet fun an Mausklick-Ereignisse auf diesem Screen. Wenn fun
Noneist, werden bestehende Bindungen entfernt.Beispiel für eine TurtleScreen-Instanz namens
screenund eine Turtle-Instanz namensturtle>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
Hinweis
Diese TurtleScreen-Methode ist nur unter dem Namen
onscreenclickals globale Funktion verfügbar. Die globale Funktiononclickist eine andere, abgeleitet von der Turtle-Methodeonclick.
- turtle.ontimer(fun, t=0)¶
- Parameter:
fun – eine Funktion ohne Argumente
t – eine Zahl >= 0
Installiert einen Timer, der fun nach t Millisekunden aufruft.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
- turtle.mainloop()¶
- turtle.done()¶
Startet die Ereignisschleife - Aufruf von Tkinter's mainloop-Funktion. Muss die letzte Anweisung in einem Turtle-Grafikprogramm sein. Darf nicht verwendet werden, wenn ein Skript von IDLE im -n-Modus (No subprocess) ausgeführt wird - für die interaktive Verwendung von Turtle-Grafiken.
>>> screen.mainloop()
Eingabemethoden¶
- turtle.textinput(title, prompt)¶
- Parameter:
title – String
prompt – String
Öffnet ein Dialogfenster zur Eingabe eines Strings. Parameter title ist der Titel des Dialogfensters, prompt ist ein Text, der meist beschreibt, welche Informationen eingegeben werden sollen. Gibt den eingegebenen String zurück. Wenn der Dialog abgebrochen wird, wird
Nonezurückgegeben.>>> screen.textinput("NIM", "Name of first player:")
- turtle.numinput(title, prompt, default=None, minval=None, maxval=None)¶
- Parameter:
title – String
prompt – String
default – Zahl (optional)
minval – Zahl (optional)
maxval – Zahl (optional)
Öffnet ein Dialogfenster zur Eingabe einer Zahl. title ist der Titel des Dialogfensters, prompt ist ein Text, der meist beschreibt, welche numerischen Informationen eingegeben werden sollen. default: Standardwert, minval: Mindestwert für die Eingabe, maxval: Höchstwert für die Eingabe. Die Zahleneingabe muss im Bereich minval .. maxval liegen, wenn diese angegeben sind. Andernfalls wird ein Hinweis ausgegeben und der Dialog bleibt zur Korrektur geöffnet. Gibt die eingegebene Zahl zurück. Wenn der Dialog abgebrochen wird, wird
Nonezurückgegeben.>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
Einstellungen und spezielle Methoden¶
- turtle.mode(mode=None)¶
- Parameter:
mode – einer der Strings "standard", "logo" oder "world"
Setzt den Turtle-Modus ("standard", "logo" oder "world") und führt ein Reset durch. Wenn mode nicht gegeben ist, wird der aktuelle Modus zurückgegeben.
Modus "standard" ist kompatibel mit dem alten
turtle. Modus "logo" ist kompatibel mit den meisten Logo-Turtle-Grafiken. Modus "world" verwendet benutzerdefinierte "Weltkoordinaten". **Achtung**: in diesem Modus erscheinen Winkel verzerrt, wenn das Verhältnis der x/y-Einheiten nicht 1 ist.Modus
Anfängliche Turtle-Ausrichtung
positive Winkel
„standard“
nach rechts (Osten)
gegen den Uhrzeigersinn
„logo“
nach oben (Norden)
im Uhrzeigersinn
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
- turtle.colormode(cmode=None)¶
- Parameter:
cmode – einer der Werte 1.0 oder 255
Gibt den Farbmodus zurück oder setzt ihn auf 1.0 oder 255. Anschliessend müssen die r, g, b Werte von Farb-Tripletts im Bereich 0..*cmode* liegen.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
- turtle.getcanvas()¶
Gibt die Zeichenfläche (Canvas) dieses TurtleScreens zurück. Nützlich für Insider, die wissen, was sie mit einer Tkinter Canvas machen sollen.
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas object ...>
- turtle.getshapes()¶
Gibt eine Liste der Namen aller aktuell verfügbaren Turtle-Formen zurück.
>>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle']
- turtle.register_shape(name, shape=None)¶
- turtle.addshape(name, shape=None)¶
Es gibt vier verschiedene Möglichkeiten, diese Funktion aufzurufen
name ist der Name einer Bilddatei (PNG, GIF, PGM und PPM) und shape ist
None: Installiert die entsprechende Bildform.>>> screen.register_shape("turtle.gif")
Hinweis
Bildformen drehen sich beim Drehen der Turtle *nicht*, daher zeigen sie nicht die Ausrichtung der Turtle an!
name ist ein beliebiger String und shape ist der Name einer Bilddatei (PNG, GIF, PGM und PPM): Installiert die entsprechende Bildform.
>>> screen.register_shape("turtle", "turtle.gif")
Hinweis
Bildformen drehen sich beim Drehen der Turtle *nicht*, daher zeigen sie nicht die Ausrichtung der Turtle an!
name ist ein beliebiger String und shape ist ein Tupel von Koordinatenpaaren: Installiert die entsprechende Polygonform.
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
name ist ein beliebiger String und shape ist ein (zusammengesetztes)
Shape-Objekt: Installiert die entsprechende zusammengesetzte Form.
Fügt eine Schildkrötenform zur shapelist von TurtleScreen hinzu. Nur auf diese Weise registrierte Formen können durch den Befehl
shape(shapename)verwendet werden.Geändert in Version 3.14: Unterstützung für die Bildformate PNG, PGM und PPM hinzugefügt. Es kann sowohl ein Formenname als auch ein Bilddateiname angegeben werden.
- turtle.turtles()¶
Gibt die Liste der Schildkröten auf dem Bildschirm zurück.
>>> for turtle in screen.turtles(): ... turtle.color("red")
- turtle.window_height()¶
Gibt die Höhe des Schildkrötenfensters zurück.
>>> screen.window_height() 480
- turtle.window_width()¶
Gibt die Breite des Schildkrötenfensters zurück.
>>> screen.window_width() 640
Methoden, die spezifisch für Screen sind und nicht von TurtleScreen geerbt wurden¶
- turtle.bye()¶
Schließt das Schildkrötengrafikfenster.
- turtle.exitonclick()¶
Bindet die `bye()`-Methode an Mausklicks auf den Bildschirm.
Wenn der Wert "using_IDLE" im Konfigurationswörterbuch `False` (Standardwert) ist, wird auch die mainloop gestartet. Hinweis: Wenn IDLE mit dem `-n` Schalter (no subprocess) verwendet wird, sollte dieser Wert in `turtle.cfg` auf `True` gesetzt werden. In diesem Fall ist die eigene mainloop von IDLE auch für das Client-Skript aktiv.
- turtle.save(filename, overwrite=False)¶
Speichert die aktuelle Schildkrötenzeichnung (und Schildkröten) als PostScript-Datei.
- Parameter:
filename – der Pfad der gespeicherten PostScript-Datei
overwrite – wenn `False` und eine Datei mit dem angegebenen Dateinamen bereits existiert, löst die Funktion einen `FileExistsError` aus. Wenn es `True` ist, wird die Datei überschrieben.
>>> screen.save("my_drawing.ps") >>> screen.save("my_drawing.ps", overwrite=True)
Hinzugefügt in Version 3.14.
- turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])¶
Setzt die Größe und Position des Hauptfensters. Standardwerte der Argumente werden im Konfigurationswörterbuch gespeichert und können über eine `turtle.cfg`-Datei geändert werden.
- Parameter:
width – wenn eine Ganzzahl, eine Größe in Pixeln, wenn eine Gleitkommazahl, ein Bruchteil des Bildschirms; Standard ist 50% des Bildschirms
height – wenn eine Ganzzahl, die Höhe in Pixeln, wenn eine Gleitkommazahl, ein Bruchteil des Bildschirms; Standard ist 75% des Bildschirms
startx – wenn positiv, Startposition in Pixeln vom linken Rand des Bildschirms, wenn negativ vom rechten Rand, wenn `None`, Fenster horizontal zentrieren
starty – wenn positiv, Startposition in Pixeln vom oberen Rand des Bildschirms, wenn negativ vom unteren Rand, wenn `None`, Fenster vertikal zentrieren
>>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # sets window to 75% of screen by 50% of screen and centers
- turtle.title(titlestring)¶
- Parameter:
titlestring – eine Zeichenkette, die in der Titelleiste des Schildkrötengrafikfensters angezeigt wird
Setzt den Titel des Schildkrötenfensters auf `titlestring`.
>>> screen.title("Welcome to the turtle zoo!")
Öffentliche Klassen¶
- class turtle.RawTurtle(canvas)¶
- class turtle.RawPen(canvas)¶
- Parameter:
canvas – ein
tkinter.Canvas, einScrolledCanvasoder einTurtleScreen
Erstellt eine Schildkröte. Die Schildkröte hat alle oben als „Methoden von Turtle/RawTurtle“ beschriebenen Methoden.
- class turtle.Turtle¶
Unterklasse von RawTurtle, hat dieselbe Schnittstelle, zeichnet aber auf einem standardmäßigen `Screen`-Objekt, das automatisch erstellt wird, wenn es zum ersten Mal benötigt wird.
- class turtle.TurtleScreen(cv)¶
- Parameter:
cv – ein
tkinter.Canvas
Bietet bildschirmorientierte Methoden wie `bgcolor()` etc., die oben beschrieben sind.
- class turtle.Screen¶
Unterklasse von TurtleScreen, mit vier hinzugefügten Methoden.
- class turtle.ScrolledCanvas(master)¶
- Parameter:
master – ein Tkinter-Widget, das den ScrolledCanvas enthält, d.h. ein Tkinter-Canvas mit hinzugefügten Scrollbars
Wird von der Klasse Screen verwendet, die somit automatisch einen ScrolledCanvas als Spielfeld für die Schildkröten bereitstellt.
- class turtle.Shape(type_, data)¶
- Parameter:
type_ – einer der Zeichenketten „polygon“, „image“, „compound“
Datenstruktur zur Modellierung von Formen. Das Paar `(type_, data)` muss dieser Spezifikation folgen
type_
Daten
„polygon“
ein Polygon-Tupel, d.h. ein Tupel von Koordinatenpaaren
„image“
ein Bild (in dieser Form nur intern verwendet!)
„compound“
`None` (eine zusammengesetzte Form muss mit der Methode `addcomponent()` erstellt werden)
- addcomponent(poly, fill, outline=None)¶
- Parameter:
poly – ein Polygon, d.h. ein Tupel von Zahlenpaaren
fill – eine Farbe, mit der das `poly` gefüllt wird
outline – eine Farbe für die Umrandung des `poly` (falls angegeben)
Beispiel
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... add more components and then use register_shape()
Siehe Zusammengesetzte Formen.
- class turtle.Vec2D(x, y)¶
Eine zweidimensionale Vektorklasse, die als Hilfsklasse zur Implementierung von Schildkrötengrafiken dient. Kann auch für Schildkrötengrafikprogramme nützlich sein. Abgeleitet von tuple, also ist ein Vektor ein Tupel!
Bietet (für Vektoren `a`, `b`, Skalar `k`)
a + bVektoradditiona - bVektorsubtraktiona * bSkalarproduktk * aund `a * k` Multiplikation mit Skalarabs(a)Betrag eines Vektorsa.rotate(angle)Rotation
Erklärung¶
Ein Schildkrötenobjekt zeichnet auf einem Bildschirmobjekt, und es gibt eine Reihe von Schlüsselklassen in der objektorientierten Schnittstelle von Schildkröten, die verwendet werden können, um sie zu erstellen und sie zueinander in Beziehung zu setzen.
Eine `Turtle`-Instanz erstellt automatisch eine `Screen`-Instanz, wenn noch keine vorhanden ist.
`Turtle` ist eine Unterklasse von `RawTurtle`, die *keine* Zeichenfläche automatisch erstellt – eine `canvas` muss ihr bereitgestellt oder für sie erstellt werden. Die `canvas` kann ein `tkinter.Canvas`, ein `ScrolledCanvas` oder ein `TurtleScreen` sein.
`TurtleScreen` ist die grundlegende Zeichenfläche für eine Schildkröte. `Screen` ist eine Unterklasse von `TurtleScreen` und enthält einige zusätzliche Methoden zur Verwaltung ihres Aussehens (einschließlich Größe und Titel) und Verhaltens. Der Konstruktor von `TurtleScreen` benötigt ein `tkinter.Canvas` oder ein `ScrolledCanvas` als Argument.
Die funktionale Schnittstelle für Schildkrötengrafiken verwendet die verschiedenen Methoden von `Turtle` und `TurtleScreen`/`Screen`. Im Hintergrund wird ein Bildschirmobjekt automatisch erstellt, wann immer eine Funktion aufgerufen wird, die von einer `Screen`-Methode abgeleitet ist. Ebenso wird ein Schildkrötenobjekt automatisch erstellt, wann immer eine der Funktionen aufgerufen wird, die von einer Turtle-Methode abgeleitet ist.
Um mehrere Schildkröten auf einem Bildschirm zu verwenden, muss die objektorientierte Schnittstelle verwendet werden.
Hilfe und Konfiguration¶
Wie man Hilfe benutzt¶
Die öffentlichen Methoden der Klassen Screen und Turtle sind über Docstrings umfassend dokumentiert. Diese können also über die Python-Hilfefunktionen als Online-Hilfe verwendet werden
Bei der Verwendung von IDLE zeigen Tooltips die Signaturen und ersten Zeilen der Docstrings von eingegebenen Funktions-/Methodenaufrufen an.
Das Aufrufen von `help()` auf Methoden oder Funktionen zeigt die Docstrings an
>>> help(Screen.bgcolor) Help on method bgcolor in module turtle: bgcolor(self, *args) unbound turtle.Screen method Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. >>> screen.bgcolor("orange") >>> screen.bgcolor() "orange" >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() "#800080" >>> help(Turtle.penup) Help on method penup in module turtle: penup(self) unbound turtle.Turtle method Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument >>> turtle.penup()
Die Docstrings der Funktionen, die von Methoden abgeleitet sind, haben eine modifizierte Form
>>> help(bgcolor) Help on function bgcolor in module turtle: bgcolor(*args) Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example:: >>> bgcolor("orange") >>> bgcolor() "orange" >>> bgcolor(0.5,0,0.5) >>> bgcolor() "#800080" >>> help(penup) Help on function penup in module turtle: penup() Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example: >>> penup()
Diese modifizierten Docstrings werden automatisch zusammen mit den Funktionsdefinitionen erstellt, die beim Import zur Laufzeit von den Methoden abgeleitet werden.
Übersetzung von Docstrings in verschiedene Sprachen¶
Es gibt ein Hilfsprogramm, um ein Wörterbuch zu erstellen, dessen Schlüssel die Methodennamen und dessen Werte die Docstrings der öffentlichen Methoden der Klassen Screen und Turtle sind.
- turtle.write_docstringdict(filename='turtle_docstringdict')¶
- Parameter:
filename – ein String, der als Dateiname verwendet wird
Erstellt und schreibt ein Docstring-Wörterbuch in ein Python-Skript mit dem angegebenen Dateinamen. Diese Funktion muss explizit aufgerufen werden (sie wird nicht von den Schildkrötengrafikklassen verwendet). Das Docstring-Wörterbuch wird in das Python-Skript `filename.py` geschrieben. Es soll als Vorlage für die Übersetzung der Docstrings in verschiedene Sprachen dienen.
Wenn Sie (oder Ihre Studenten) `turtle` mit Online-Hilfe in Ihrer Muttersprache verwenden möchten, müssen Sie die Docstrings übersetzen und die resultierende Datei z. B. als `turtle_docstringdict_german.py` speichern.
Wenn Sie einen entsprechenden Eintrag in Ihrer `turtle.cfg`-Datei haben, wird dieses Wörterbuch beim Import geladen und ersetzt die ursprünglichen englischen Docstrings.
Zum Zeitpunkt der Erstellung dieses Dokuments gibt es Docstring-Wörterbücher in deutscher und italienischer Sprache. (Anfragen bitte an `glingl@aon.at`.)
Wie man Screen und Turtles konfiguriert¶
Die integrierte Standardkonfiguration ahmt das Aussehen und Verhalten des alten Turtle-Moduls nach, um die bestmögliche Kompatibilität damit zu erhalten.
Wenn Sie eine andere Konfiguration verwenden möchten, die die Funktionen dieses Moduls besser widerspiegelt oder besser auf Ihre Bedürfnisse zugeschnitten ist, z. B. für den Einsatz im Unterricht, können Sie eine Konfigurationsdatei `turtle.cfg` vorbereiten, die beim Import gelesen wird und die Konfiguration entsprechend ihren Einstellungen ändert.
Die integrierte Konfiguration würde der folgenden `turtle.cfg` entsprechen
width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False
Kurze Erklärung ausgewählter Einträge
Die ersten vier Zeilen entsprechen den Argumenten der `Screen.setup()`-Methode.
Zeile 5 und 6 entsprechen den Argumenten der Methode `Screen.screensize()`.
shape kann jede der integrierten Formen sein, z. B.: arrow, turtle, etc. Für weitere Informationen versuchen Sie `help(shape)`.
Wenn Sie keine Füllfarbe verwenden möchten (d.h. die Schildkröte transparent machen), müssen Sie `fillcolor = ""` schreiben (aber alle nicht-leeren Zeichenketten dürfen keine Anführungszeichen in der cfg-Datei haben).
Wenn Sie den Zustand der Schildkröte widerspiegeln möchten, müssen Sie `resizemode = auto` verwenden.
Wenn Sie z.B. `language = italian` setzen, wird das Docstringdict `turtle_docstringdict_italian.py` beim Import geladen (wenn es im Importpfad vorhanden ist, z. B. im selben Verzeichnis wie `turtle`).
Die Einträge exampleturtle und examplescreen definieren die Namen dieser Objekte, wie sie in den Docstrings vorkommen. Die Transformation von Methoden-Docstrings in Funktions-Docstrings wird diese Namen aus den Docstrings entfernen.
using_IDLE: Setzen Sie dies auf `True`, wenn Sie regelmäßig mit IDLE und seinem `-n` Schalter („no subprocess“) arbeiten. Dies verhindert, dass `exitonclick()` die mainloop startet.
Es kann eine `turtle.cfg`-Datei im Verzeichnis geben, in dem `turtle` gespeichert ist, und eine weitere im aktuellen Arbeitsverzeichnis. Letztere überschreibt die Einstellungen der ersten.
Das Verzeichnis `Lib/turtledemo` enthält eine `turtle.cfg`-Datei. Sie können sie als Beispiel studieren und ihre Auswirkungen sehen, wenn Sie die Demos ausführen (vorzugsweise nicht aus dem Demo-Viewer heraus).
turtledemo — Demo-Skripte¶
Das Paket `turtledemo` enthält eine Reihe von Demo-Skripten. Diese Skripte können mit dem mitgelieferten Demo-Viewer wie folgt ausgeführt und angezeigt werden
python -m turtledemo
Alternativ können Sie die Demo-Skripte einzeln ausführen. Zum Beispiel,
python -m turtledemo.bytedesign
Das Verzeichnis des Pakets `turtledemo` enthält
Einen Demo-Viewer `__main__.py`, der verwendet werden kann, um den Quellcode der Skripte anzuzeigen und sie gleichzeitig auszuführen.
Mehrere Skripte, die verschiedene Funktionen des `turtle`-Moduls demonstrieren. Beispiele können über das Menü "Examples" aufgerufen werden. Sie können auch eigenständig ausgeführt werden.
Eine `turtle.cfg`-Datei, die als Beispiel dafür dient, wie solche Dateien geschrieben und verwendet werden.
Die Demo-Skripte sind
Name |
Beschreibung |
Features |
|---|---|---|
bytedesign |
komplexes klassisches Schildkrötengrafikmuster |
|
chaos |
graphische Darstellung der Verhulst-Dynamik, zeigt, dass Computerberechnungen Ergebnisse liefern können, die manchmal den Erwartungen widersprechen |
Weltkoordinaten |
clock |
analoge Uhr, die die Zeit Ihres Computers anzeigt |
Schildkröten als Uhrzeiger, ontimer |
colormixer |
Experimentieren mit r, g, b |
|
forest |
3 Breitensuche-Bäume |
Randomisierung |
fractalcurves |
Hilbert- und Koch-Kurven |
Rekursion |
lindenmayer |
Ethnomathematik (indische Kolams) |
L-System |
minimal_hanoi |
Türme von Hanoi |
Rechteckige Schildkröten als Hanoi-Scheiben (shape, shapesize) |
nim |
Spielen Sie das klassische Nim-Spiel mit drei Stockwerkern gegen den Computer. |
Schildkröten als Nim-Sticks, ereignisgesteuert (Maus, Tastatur) |
paint |
super minimalistisches Zeichenprogramm |
|
peace |
elementar |
Schildkröte: Aussehen und Animation |
penrose |
Aperiodische Kachelung mit Drachen und Pfeilen |
|
planet_and_moon |
Simulation eines Gravitationssystems |
zusammengesetzte Formen, |
rosette |
ein Muster aus dem Wikipedia-Artikel über Schildkrötengrafiken |
|
round_dance |
tanzende Schildkröten, die paarweise in entgegengesetzter Richtung rotieren |
zusammengesetzte Formen, clone shapesize, tilt, get_shapepoly, update |
sorting_animate |
visuelle Demonstration verschiedener Sortiermethoden |
einfache Ausrichtung, Randomisierung |
tree |
ein (grafischer) Breitensuche-Baum (mit Generatoren) |
|
two_canvases |
einfaches Design |
Schildkröten auf zwei Leinwänden |
yinyang |
weiteres elementares Beispiel |
Viel Spaß!
Änderungen seit Python 2.6¶
Die Methoden `Turtle.tracer`, `Turtle.window_width` und `Turtle.window_height` wurden entfernt. Methoden mit diesen Namen und Funktionalitäten sind jetzt nur noch als Methoden von `Screen` verfügbar. Die von diesen abgeleiteten Funktionen bleiben verfügbar. (Tatsächlich waren diese Methoden schon in Python 2.6 lediglich Duplikate der entsprechenden Methoden von `TurtleScreen`/`Screen`.)
Die Methode `Turtle.fill()` wurde entfernt. Das Verhalten von `begin_fill()` und `end_fill()` hat sich geringfügig geändert: Jetzt muss jeder Füllvorgang mit einem `end_fill()`-Aufruf abgeschlossen werden.
Eine Methode `Turtle.filling` wurde hinzugefügt. Sie gibt einen booleschen Wert zurück: `True`, wenn ein Füllvorgang läuft, `False` sonst. Dieses Verhalten entspricht einem `fill()`-Aufruf ohne Argumente in Python 2.6.
Änderungen seit Python 3.0¶
Die `Turtle`-Methoden `shearfactor()`, `shapetransform()` und `get_shapepoly()` wurden hinzugefügt. Somit ist nun der volle Umfang linearer Transformationen für die Transformation von Schildkrötenformen verfügbar. `tiltangle()` wurde funktional erweitert: Sie kann nun zum Abrufen oder Setzen des Neigungswinkels verwendet werden.
Die `Screen`-Methode `onkeypress()` wurde als Ergänzung zu `onkey()` hinzugefügt. Da letztere Aktionen an das Loslassen einer Taste bindet, wurde für sie auch ein Alias: `onkeyrelease()` hinzugefügt.
Die Methode `Screen.mainloop()` wurde hinzugefügt, so dass die eigenständige Funktion `mainloop()` bei der Arbeit mit `Screen`- und `Turtle`-Objekten nicht mehr benötigt wird.
Zwei Eingabemethoden wurden hinzugefügt: `Screen.textinput()` und `Screen.numinput()`. Diese öffnen Eingabedialoge und geben Strings bzw. Zahlen zurück.