Spec-Zone.ru › Python 3.13

Черепаха — Графика черепахи

Исходный код: Lib/turtle.py

Введение

Графика черепахи — это реализация популярных геометрических инструментов рисования, введённых в языке Logo, разработанных Уолли Фёрзейгом, Сеймуром Папертом и Синтией Соломон в 1967 году.

Начало работы

Представьте себе роботизированную черепаху, начинающую с координат (0, 0) в плоскости x-y. После import turtle, дайте ей команду turtle.forward(15), и она переместится (на экране!) на 15 пикселей в направлении, в котором она смотрит, рисуя линию по мере движения. Дайте ей команду turtle.right(25), и она повернётся на месте на 25 градусов по часовой стрелке.

Звезда черепахи

Черепаха может рисовать сложные фигуры, используя программы, повторяющие простые движения.

../_images/turtle-star.png

В Python графика черепахи предоставляет представление физической «черепахи» (маленький робот с ручкой), рисующей на листе бумаги на полу.

Это эффективный и проверенный способ для учащихся познакомиться с концепциями программирования и взаимодействием с программным обеспечением, так как он предоставляет мгновенную, наглядную обратную связь. Он также обеспечивает удобный доступ к графическому выводу в целом.

Рисование черепахой изначально было создано как учебный инструмент, который можно использовать учителям в классе. Для программиста, которому нужно создать графический вывод, это может быть способ сделать это без накладных расходов на введение более сложных или внешних библиотек в свою работу.

Учебник

Новые пользователи должны начать здесь. В этом учебнике мы рассмотрим некоторые основы рисования черепахой.

Запуск среды черепахи

В оболочке Python импортируйте все объекты модуля turtle:

from turtle import *

Если у вас возникнет ошибка No module named '_tkinter', вам придётся установить Tk interface package на вашей системе.

Простое рисование

Переместите черепаху вперёд на 100 шагов:

forward(100)

Вы должны увидеть (вероятно, в новом окне на вашем дисплее) линию, нарисованную черепахой, направленной на восток. Измените направление черепахи, повернув её влево (против часовой стрелки) на 120 градусов:

left(120)

Давайте продолжим рисованием треугольника:

forward(100)
left(120)
forward(100)

Обратите внимание, как черепаха, представленная стрелкой, указывает в разные направления по мере управления ею.

Поэкспериментируйте с этими командами, а также с backward() и right().

Управление ручкой

Попробуйте изменить цвет — например, color('blue') — и ширину линии — например, width(3) — и затем нарисуйте снова.

Вы также можете перемещать черепаху без рисования, подняв перо: up() перед перемещением. Чтобы начать рисовать снова, используйте down().

Положение черепахи

Верните черепаху в исходную точку (полезно, если она исчезла за пределами экрана):

home()

Начальная позиция находится в центре экрана черепахи. Если вам когда-либо нужно узнать их, получите координаты x-y черепахи с помощью:

pos()

Начало в (0, 0).

И через некоторое время, вероятно, поможет очистить окно, чтобы начать заново:

clearscreen()

Создание алгоритмических узоров

Используя циклы, можно создавать геометрические узоры:

for steps in range(100):
    for c in ('blue', 'red', 'green'):
        color(c)
        forward(steps)
        right(30)

— которые, конечно, ограничены только воображением!

Давайте нарисуем звезду вверху этой страницы. Нам нужны красные линии, заполненные жёлтым:

color('red')
fillcolor('yellow')

Так же как up() и down() определяют, будут ли нарисованы линии, заполнение можно включать и выключать:

begin_fill()

Далее мы создадим цикл:

while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break

abs(pos()) < 1 — хороший способ узнать, когда черепаха вернётся в исходную позицию.

Наконец, завершим заполнение:

end_fill()

(Обратите внимание, что заполнение происходит только тогда, когда вы даёте команду end_fill().)

Как использовать…

Этот раздел охватывает некоторые типичные случаи использования и подходы черепахи.

Как начать как можно быстрее

Одно из преимуществ графики черепахи — это мгновенная визуальная обратная связь, доступная от простых команд — это отличный способ познакомить детей с идеями программирования с минимальными накладными расходами (конечно, не только детей).

Модуль turtle делает это возможным, предоставляя все его основные функции в виде функций, доступных с from turtle import *. Учебник по графике черепахи описывает этот подход.

Стоит отметить, что многие команды черепахи также имеют ещё более краткие эквиваленты, такие как fd() для forward(). Они особенно полезны при работе с учащимися, для которых написание не является навыком.

Для работы графики черепахи вам потребуется установить Tk interface package на вашей системе. Будьте предупреждены, что это не всегда просто, поэтому проверьте это заранее, если вы планируете использовать графику черепахи с учащимися.

Использование пространства имён модуля turtle

Использование from turtle import * удобно — но будьте осторожны, оно импортирует довольно большой набор объектов, и если вы делаете что-то помимо графики черепахи, вы рискуете возникновением конфликта имён (эта проблема становится ещё более актуальной, если вы используете графику черепахи в скрипте, где могут быть импортированы другие модули).

Решение — использовать import turtle — fd() становится turtle.fd(), width() становится turtle.width() и так далее. (Если написание «turtle» по много раз становится утомительным, используйте, например, import turtle as t вместо этого.)

Использование графики черепахи в скрипте

Рекомендуется использовать пространство имён модуля turtle так, как описано выше, например:

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)

Однако требуется и ещё один шаг — как только скрипт завершится, Python также закроет окно черепахи. Добавьте:

t.mainloop()

в конец скрипта. Скрипт теперь будет ожидать закрытия и не выйдет, пока его не закроют, например, закрыв окно графики черепахи.

Использование объектно-ориентированной графики черепахи

См. также

Описание объектно-ориентированного интерфейса

Кроме как для очень базовых вводных целей или для опробования вещей как можно быстрее, чаще и намного мощнее использовать объектно-ориентированный подход к графике черепахи. Например, это позволяет иметь несколько черепах на экране одновременно.

В этом подходе различные команды черепахи являются методами объектов (в основном объектов Turtle). Вы *можете* использовать объектно-ориентированный подход в оболочке, но это будет более типично в скрипте Python.

Приведённый выше пример становится:

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()

Обратите внимание на последнюю строку. t.screen — это экземпляр Screen, на котором существует экземпляр черепахи; он создаётся автоматически вместе с черепахой.

Экран черепахи может быть настроен, например:

t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")

Справочник по графике черепахи

Примечание

В последующей документации приводится список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент self, который здесь опущен.

Методы черепахи

Движение черепахи
Перемещение и рисование
Определение состояния черепахи
Установление и измерение
Управление ручкой
Состояние рисования
Управление цветом
Заполнение
Дополнительное управление рисованием
Состояние черепахи
Видимость
Внешний вид
Использование событий
Специальные методы черепахи

Методы TurtleScreen/Screen

Управление окном
Управление анимацией
Использование событий экрана
Настройки и специальные методы
Методы ввода
Методы, специфичные для Screen

Методы RawTurtle/Turtle и соответствующие функции

В большинстве примеров этого раздела упоминается экземпляр черепахи, называемый turtle.

Движение черепахи

turtle.forward(distance)
turtle.fd(distance)
Параметры:

distance – число (целое или вещественное)

Переместить черепаху вперед на указанное расстояние distance в направлении, в котором она движется.

>>> 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)
Параметры:

distance – число

Переместить черепаху назад на расстояние distance, противоположно направлению ее движения. Направление движения черепахи не изменяется.

>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
turtle.right(angle)
turtle.rt(angle)
Параметры:

angle – число (целое или вещественное)

Повернуть черепаху вправо на angle единиц. (Единицы по умолчанию – градусы, но могут быть изменены с помощью функций degrees() и radians().) Направление поворота зависит от режима черепахи, см. mode().

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.left(angle)
turtle.lt(angle)
Параметры:

angle – число (целое или вещественное)

Повернуть черепаху влево на angle единиц. (Единицы по умолчанию – градусы, но могут быть изменены с помощью функций degrees() и radians().) Направление поворота зависит от режима черепахи, см. mode().

>>> 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)
Параметры:
  • x – число или пара/вектор чисел
  • y – число или None

Если y – None, x должен быть парой координат или Vec2D (например, как возвращает pos()).

Переместить черепаху в абсолютные координаты. Если перо опущенно, нарисовать линию. Направление движения черепахи не изменяется.

>>> 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)
Параметры:
  • x – число или None
  • y – число или None
  • fill_gap – логическое значение

Переместить черепаху в абсолютные координаты. В отличие от goto(x, y), линия не будет нарисована. Направление движения черепахи не изменяется. Если в данный момент происходит заполнение, многоугольник(и), из которого черепаха переместилась, будет заполнен после выхода, и заполнение начнется заново после перемещения. Это можно отключить с помощью fill_gap=True, что делает воображаемую линию, пройденную во время перемещения, барьером для заполнения, как в goto(x, y).

>>> 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)

Добавлена в версии 3.12.

turtle.setx(x)
Параметры:

x – число (целое или вещественное)

Установить первую координату черепахи на x, вторую координату оставить без изменения.

>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
turtle.sety(y)
Параметры:

y – число (целое или вещественное)

Установить вторую координату черепахи на y, первую координату оставить без изменения.

>>> turtle.position()
(0.00,40.00)
>>> turtle.sety(-10)
>>> turtle.position()
(0.00,-10.00)
turtle.setheading(to_angle)
turtle.seth(to_angle)
Параметры:

to_angle – число (целое или вещественное)

Установить ориентацию черепахи на to_angle. Вот некоторые общие направления в градусах:

стандартный режим

режим Logo

0 - восток

0 - север

90 - север

90 - восток

180 - запад

180 - юг

270 - юг

270 - запад

>>> turtle.setheading(90)
>>> turtle.heading()
90.0
turtle.home()

Переместить черепаху в начало координат – (0,0) – и установить ее направление на начальное направление (которое зависит от режима, см. 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)
Параметры:
  • radius – число
  • extent – число (или None)
  • steps – целое число (или None)

Нарисовать окружность с заданным radius. Центр окружности находится на расстоянии radius влево от черепахи; extent – угол – определяет, какая часть окружности рисуется. Если extent не задан, рисуется вся окружность. Если extent не равен полной окружности, одна из точек дуги является текущей позицией пера. Рисуется дуга против часовой стрелки, если radius положительный, и по часовой стрелке в противном случае. Наконец, направление черепахи изменяется на величину extent.

Так как окружность аппроксимируется вписанным правильным многоугольником, steps определяет количество шагов, которые нужно использовать. Если не задано, оно будет вычислено автоматически. Может быть использовано для рисования правильных многоугольников.

>>> 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(size=None, *color)
Параметры:
  • size – целое число >= 1 (если задано)
  • color – строка цвета или числовой кортеж цвета

Нарисовать круглую точку диаметром size, используя цвет color. Если size не задано, используется максимальное значение из pensize+4 и 2*pensize.

>>> 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()

Отпечатать копию формы черепахи на холсте в текущей позиции черепахи. Вернуть id отпечатка для этого отпечатка, который можно использовать для его удаления, вызвав clearstamp(stamp_id).

>>> turtle.color("blue")
>>> stamp_id = turtle.stamp()
>>> turtle.fd(50)
turtle.clearstamp(stampid)
Параметры:

stampid – целое число, должно быть возвращенным значением предыдущего вызова stamp()

Удалить отпечаток с заданным 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)
Параметры:

n – целое число (или None)

Удалить все или первые/последние n отпечатков черепахи. Если n – None, удалить все отпечатки, если n > 0 удалить первые n отпечатков, иначе, если n < 0 удалить последние n отпечатков.

>>> for i in range(8):
...     unused_stamp_id = turtle.stamp()
...     turtle.fd(30)
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.undo()

Отменить (повторно) последнее действие черепахи. Количество доступных отмен определяется размером буфера отмены.

>>> for i in range(4):
...     turtle.fd(50); turtle.lt(80)
...
>>> for i in range(8):
...     turtle.undo()
turtle.speed(speed=None)
Параметры:

speed – целое число в диапазоне 0..10 или строка скорости (см. ниже)

Установить скорость черепахи на целое значение в диапазоне 0..10. Если аргумент не задан, возвратить текущую скорость.

Если входное значение больше 10 или меньше 0,5, скорость устанавливается в 0. Строки скорости сопоставляются со значениями скорости следующим образом:

  • “fastest”: 0
  • “fast”: 10
  • “normal”: 6
  • “slow”: 3
  • “slowest”: 1

Скорости от 1 до 10 обеспечивают все более быструю анимацию рисования линий и поворота черепахи.

Внимание: speed = 0 означает, что никакой анимации не происходит. forward/back заставляет черепаху мгновенно перемещаться, а left/right заставляют черепаху мгновенно поворачиваться.

>>> turtle.speed()
3
>>> turtle.speed('normal')
>>> turtle.speed()
6
>>> turtle.speed(9)
>>> turtle.speed()
9

Состояние черепахи

turtle.position()
turtle.pos()

Возвращает текущее положение черепахи (x,y) (в виде вектора Vec2D).

>>> turtle.pos()
(440.00,-0.00)
turtle.towards(x, y=None)
Параметры:
  • x – число или пара/вектор чисел или экземпляр черепахи
  • y – число, если x — число, иначе None

Возвращает угол между линией от положения черепахи до указанного положения (x,y), вектора или другой черепахи. Это зависит от начальной ориентации черепахи, которая зависит от режима — «стандартный»/«мировой» или «лого».

>>> turtle.goto(10, 10)
>>> turtle.towards(0,0)
225.0
turtle.xcor()

Возвращает координату x черепахи.

>>> turtle.home()
>>> turtle.left(50)
>>> turtle.forward(100)
>>> turtle.pos()
(64.28,76.60)
>>> print(round(turtle.xcor(), 5))
64.27876
turtle.ycor()

Возвращает координату y черепахи.

>>> turtle.home()
>>> turtle.left(60)
>>> turtle.forward(100)
>>> print(turtle.pos())
(50.00,86.60)
>>> print(round(turtle.ycor(), 5))
86.60254
turtle.heading()

Возвращает текущее направление черепахи (значение зависит от режима черепахи, см. mode()).

>>> turtle.home()
>>> turtle.left(67)
>>> turtle.heading()
67.0
turtle.distance(x, y=None)
Параметры:
  • x – число или пара/вектор чисел или экземпляр черепахи
  • y – число, если x — число, иначе None

Возвращает расстояние от черепахи до (x,y), заданного вектора или заданной другой черепахи, в единицах шага черепахи.

>>> turtle.home()
>>> turtle.distance(30,40)
50.0
>>> turtle.distance((30,40))
50.0
>>> joe = Turtle()
>>> joe.forward(77)
>>> turtle.distance(joe)
77.0

Настройки измерения

turtle.degrees(fullcircle=360.0)
Параметры:

fullcircle – число

Устанавливает единицы измерения углов, т.е. устанавливает количество «градусов» для полного круга. Значение по умолчанию — 360 градусов.

>>> 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()

Устанавливает единицы измерения углов в радианах. Эквивалентно degrees(2*math.pi).

>>> turtle.home()
>>> turtle.left(90)
>>> turtle.heading()
90.0
>>> turtle.radians()
>>> turtle.heading()
1.5707963267948966

Управление пером

Состояние рисования

turtle.pendown()
turtle.pd()
turtle.down()

Опустить перо – рисовать при перемещении.

turtle.penup()
turtle.pu()
turtle.up()

Поднять перо – не рисовать при перемещении.

turtle.pensize(width=None)
turtle.width(width=None)
Параметры:

width – положительное число

Установить толщину линии на width или вернуть её. Если режим изменения размера установлен в «авто», а форма черепахи — многоугольник, этот многоугольник рисуется с той же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.

>>> turtle.pensize()
1
>>> turtle.pensize(10)   # from here on lines of width 10 are drawn
turtle.pen(pen=None, **pendict)
Параметры:
  • pen – словарь с некоторыми или всеми перечисленными ниже ключами
  • pendict – один или несколько ключевых аргументов с перечисленными ниже ключами в качестве ключевых слов

Возвращает или устанавливает атрибуты пера в «словаре пера» со следующими парами ключ/значение:

  • “shown”: True/False
  • “pendown”: True/False
  • “pencolor”: строка цвета или кортеж цвета
  • “fillcolor”: строка цвета или кортеж цвета
  • “pensize”: положительное число
  • “speed”: число в диапазоне 0..10
  • “resizemode”: «auto» или «user» или «noresize»
  • “stretchfactor”: (положительное число, положительное число)
  • “outline”: положительное число
  • “tilt”: число

Этот словарь может использоваться в качестве аргумента для последующего вызова pen() для восстановления предыдущего состояния пера. Кроме того, один или несколько из этих атрибутов могут быть предоставлены в качестве ключевых аргументов. Это позволяет установить несколько атрибутов пера в одном операторе.

>>> 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()

Возвращает True если перо опущенно, False если оно поднято.

>>> turtle.penup()
>>> turtle.isdown()
False
>>> turtle.pendown()
>>> turtle.isdown()
True

Управление цветом

turtle.pencolor(*args)

Возвращает или устанавливает цвет пера.

Допускается четыре формата ввода:

pencolor()

Возвращает текущий цвет пера как строку спецификации цвета или кортеж (см. пример). Может быть использован в качестве входных данных для другого вызова color/pencolor/fillcolor.

pencolor(colorstring)

Устанавливает цвет пера на colorstring, которая является строкой спецификации цвета Tk, например "red", "yellow", или "#33cc8c".

pencolor((r, g, b))

Устанавливает цвет пера на RGB цвет, представленный кортежем из r, g и b. Каждое из r, g и b должно быть в диапазоне 0..colormode, где colormode — либо 1.0, либо 255 (см. colormode()).

pencolor(r, g, b)

Устанавливает цвет пера на RGB цвет, представленный r, g и b. Каждое из r, g и b должно быть в диапазоне 0..colormode.

Если форма черепахи — многоугольник, контур этого многоугольника рисуется с установленным цветом пера.

>>> 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(*args)

Возвращает или устанавливает цвет заливки.

Допускается четыре формата ввода:

fillcolor()

Возвращает текущий цвет заливки как строку спецификации цвета, возможно в формате кортежа (см. пример). Может быть использован в качестве входных данных для другого вызова color/pencolor/fillcolor.

fillcolor(colorstring)

Устанавливает цвет заливки на colorstring, которая является строкой спецификации цвета Tk, например "red", "yellow", или "#33cc8c".

fillcolor((r, g, b))

Устанавливает цвет заливки на RGB цвет, представленный кортежем из r, g и b. Каждое из r, g и b должно быть в диапазоне 0..colormode, где colormode — либо 1.0, либо 255 (см. colormode()).

fillcolor(r, g, b)

Устанавливает цвет заливки на RGB цвет, представленный r, g и b. Каждое из r, g и b должно быть в диапазоне 0..colormode.

Если форма черепахи — многоугольник, внутренняя часть этого многоугольника рисуется с установленным цветом заливки.

>>> 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(*args)

Возвращает или устанавливает цвета пера и заливки.

Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:

color()

Возвращает текущий цвет пера и текущий цвет заливки как пару строк спецификации цвета или кортежей, как возвращают pencolor() и fillcolor().

color(colorstring), color((r,g,b)), color(r,g,b)

Ввод, как в pencolor(), устанавливает и цвет заливки, и цвет пера на заданное значение.

color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))

Эквивалентно pencolor(colorstring1) и fillcolor(colorstring2) и аналогично, если используется другой формат ввода.

Если форма черепахи — многоугольник, контур и внутренняя часть этого многоугольника рисуются с установленным цветом.

>>> turtle.color("red", "green")
>>> turtle.color()
('red', 'green')
>>> color("#285078", "#a0c8f0")
>>> color()
((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))

См. также: метод экрана colormode().

Заливка

turtle.filling()

Возвращает состояние заливки (True если заливкой, False в противном случае).

>>> turtle.begin_fill()
>>> if turtle.filling():
...    turtle.pensize(5)
... else:
...    turtle.pensize(3)
turtle.begin_fill()

Вызывается непосредственно перед рисованием фигуры, которая должна быть закрашена.

turtle.end_fill()

Закрасить фигуру, нарисованную после последнего вызова begin_fill().

Заливаются ли области перекрытия для самопересекающихся многоугольников или нескольких фигур, зависит от графической системы операционной системы, типа перекрытия и количества перекрытий. Например, звезда черепахи выше может быть полностью жёлтой или иметь некоторые белые области.

>>> turtle.color("black", "red")
>>> turtle.begin_fill()
>>> turtle.circle(80)
>>> turtle.end_fill()

Дополнительное управление рисованием

turtle.reset()

Удалить рисунки черепахи со экрана, переместить черепаху в центр и установить переменные в значения по умолчанию.

>>> 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()

Удалить рисунки черепахи со экрана. Не перемещать черепаху. Состояние и положение черепахи, а также рисунки других черепах не затрагиваются.

turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))
Параметры:
  • arg – объект, который будет записан в TurtleScreen
  • move – True/False
  • align – одна из строк «left», «center» или «right»
  • font – тройка (имя_шрифта, размер_шрифта, тип_шрифта)

Написать текст — строковое представление arg — в текущей позиции черепахи в соответствии с align («left», «center» или «right») и с заданным шрифтом. Если move — True, перо перемещается в нижний правый угол текста. По умолчанию move — False.

>>> turtle.write("Home = ", True, align="center")
>>> turtle.write((0,0), True)

Состояние черепахи

Видимость

turtle.hideturtle()
turtle.ht()

Скрыть черепаху. Это хорошая идея, когда вы занимаетесь сложным рисованием, так как скрытие черепахи заметно ускоряет рисование.

>>> turtle.hideturtle()
turtle.showturtle()
turtle.st()

Показать черепаху.

>>> turtle.showturtle()
turtle.isvisible()

Возвращает True, если черепаха отображается, False, если она скрыта.

>>> turtle.hideturtle()
>>> turtle.isvisible()
False
>>> turtle.showturtle()
>>> turtle.isvisible()
True

Внешний вид

turtle.shape(name=None)
Параметры:

name – строка, являющаяся допустимым именем формы

Установить форму черепахи на форму с данным именем name или, если имя не указано, вернуть имя текущей формы. Форма с именем name должна существовать в словаре форм TurtleScreen. Изначально существуют следующие формы многоугольников: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классическая». Чтобы узнать, как работать с формами, см. метод экрана register_shape().

>>> turtle.shape()
'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
'turtle'
turtle.resizemode(rmode=None)
Параметры:

rmode – одна из строк «авто», «пользователь», «без изменения размера»

Установить режим изменения размера на одно из значений: «авто», «пользователь», «без изменения размера». Если rmode не указан, возвращается текущий режим изменения размера. Разные режимы изменения размера имеют следующие эффекты:

  • «авто»: адаптирует внешний вид черепахи в соответствии со значением pensize.
  • «пользователь»: адаптирует внешний вид черепахи в соответствии со значениями stretchfactor и outlinewidth (контур), которые устанавливаются с помощью shapesize().
  • «без изменения размера»: адаптация внешнего вида черепахи не происходит.

resizemode("user") вызывается shapesize() при использовании с аргументами.

>>> 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)
Параметры:
  • stretch_wid – положительное число
  • stretch_len – положительное число
  • outline – положительное число

Возвращает или задает атрибуты пера x/y-stretchfactors и/или outline. Устанавливает режим изменения размера на «пользователь». Только если режим изменения размера установлен на «пользователь», черепаха будет отображаться растянутой в соответствии со своими stretchfactors: stretch_wid – коэффициент растяжения перпендикулярно ориентации, stretch_len – коэффициент растяжения по направлению ориентации, outline определяет ширину контура формы.

>>> 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)
Параметры:

shear – число (необязательно)

Установить или вернуть текущий коэффициент сдвига. Сдвинуть форму черепахи в соответствии с заданным коэффициентом сдвига shear, который является тангенсом угла сдвига. Не изменять курс черепахи (направление движения). Если shear не задан: вернуть текущий коэффициент сдвига, т. е. тангенс угла сдвига, по которому линии, параллельные курсу черепахи, смещаются.

>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.shearfactor(0.5)
>>> turtle.shearfactor()
0.5
turtle.tilt(angle)
Параметры:

angle – число

Повернуть форму черепахи на angle градусов от текущего угла наклона, но не изменять курс черепахи (направление движения).

>>> 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)
Параметры:

angle – число (необязательно)

Установить или вернуть текущий угол наклона. Если угол задан, повернуть форму черепахи, чтобы она указывала в заданном направлении, независимо от текущего угла наклона. Не изменять курс черепахи (направление движения). Если угол не задан: вернуть текущий угол наклона, т. е. угол между ориентацией формы черепахи и курсом черепахи (направление ее движения).

>>> 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)
Параметры:
  • t11 – число (необязательно)
  • t12 – число (необязательно)
  • t21 – число (необязательно)
  • t12 – число (необязательно)

Установить или вернуть текущую матрицу преобразования формы черепахи.

Если ни один из элементов матрицы не задан, вернуть матрицу преобразования как кортеж из 4 элементов. В противном случае установить заданные элементы и преобразовать форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 * t22 - t12 * t21 не должен быть равен нулю, иначе произойдет ошибка. Изменить stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.

>>> 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()

Возвращает текущий многоугольник формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.

>>> turtle.shape("square")
>>> turtle.shapetransform(4, -1, 0, 2)
>>> turtle.get_shapepoly()
((50, -20), (30, 20), (-50, 20), (-30, -20))

Использование событий

turtle.onclick(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
  • btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
  • add – True или False – если True, будет добавлено новое привязывание, в противном случае оно заменит предыдущее привязывание

Привязать fun к событиям щелчка мыши на этой черепахе. Если fun – None, существующие привязки удаляются. Пример для анонимной черепахи, т. е. процедурный способ:

>>> 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)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
  • btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
  • add – True или False – если True, будет добавлено новое привязывание, в противном случае оно заменит предыдущее привязывание

Привязать fun к событиям отпускания кнопки мыши на этой черепахе. Если fun – None, существующие привязки удаляются.

>>> 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)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
  • btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
  • add – True или False – если True, будет добавлено новое привязывание, в противном случае оно заменит предыдущее привязывание

Привязать fun к событиям перемещения мыши на этой черепахе. Если fun – None, существующие привязки удаляются.

Примечание: каждой последовательности событий перемещения мыши на черепахе предшествует событие щелчка мыши на этой черепахе.

>>> turtle.ondrag(turtle.goto)

В дальнейшем, нажатие и перетаскивание черепахи перемещает ее по экрану, тем самым создавая рисунки от руки (если перо опущенно).

Методы черепахи

turtle.begin_poly()

Начать запись вершин многоугольника. Текущее положение черепахи — первая вершина многоугольника.

turtle.end_poly()

Остановить запись вершин многоугольника. Текущее положение черепахи — последняя вершина многоугольника. Она будет соединена с первой вершиной.

turtle.get_poly()

Возвращает последний записанный многоугольник.

>>> 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()

Создаёт и возвращает копию черепахи с теми же позицией, направлением и свойствами черепахи.

>>> mick = Turtle()
>>> joe = mick.clone()
turtle.getturtle()
turtle.getpen()

Возвращает сам объект черепахи. Единственное разумное использование: как функция для возвращения «анонимной черепахи»:

>>> pet = getturtle()
>>> pet.fd(50)
>>> pet
<turtle.Turtle object at 0x...>
turtle.getscreen()

Возвращает объект TurtleScreen, на котором рисует черепаха. Затем для этого объекта можно вызвать методы TurtleScreen.

>>> ts = turtle.getscreen()
>>> ts
<turtle._Screen object at 0x...>
>>> ts.bgcolor("pink")
turtle.setundobuffer(size)
Параметры:

размер – целое число или None

Устанавливает или отключает буфер отмены. Если размер — целое число, устанавливается пустой буфер отмены заданного размера. размер определяет максимальное количество действий черепахи, которые можно отменить методом/функцией undo(). Если размер — None, буфер отмены отключается.

>>> turtle.setundobuffer(42)
turtle.undobufferentries()

Возвращает количество элементов в буфере отмены.

>>> while undobufferentries():
...     undo()

Составные фигуры

Чтобы использовать составные фигуры черепахи, состоящие из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс Shape, как описано ниже:

  1. Создайте пустой объект Shape типа “составной”.
  2. Добавьте столько компонентов в этот объект, сколько нужно, используя метод addcomponent().

    Например:

    >>> 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")
    
  3. Теперь добавьте Shape в список фигур экрана и используйте его:

    >>> register_shape("myshape", s)
    >>> shape("myshape")
    

Примечание

Класс Shape используется внутренне методом register_shape() различными способами. Программист приложения должен работать с классом Shape только при использовании составных фигур, как показано выше!

Методы TurtleScreen/Screen и соответствующие функции

Большинство примеров в этом разделе относятся к экземпляру TurtleScreen, называемому screen.

Управление окном

turtle.bgcolor(*args)
Параметры:

args – строка цвета или три числа в диапазоне 0..colormode или тройка таких чисел

Устанавливает или возвращает цвет фона TurtleScreen.

>>> screen.bgcolor("orange")
>>> screen.bgcolor()
'orange'
>>> screen.bgcolor("#800080")
>>> screen.bgcolor()
(128.0, 0.0, 128.0)
turtle.bgpic(picname=None)
Параметры:

picname – строка, имя файла gif или "nopic", или None

Устанавливает изображение фона или возвращает имя текущего изображения фона. Если picname — имя файла, устанавливает соответствующее изображение в качестве фона. Если picname — "nopic", удаляет изображение фона, если оно есть. Если picname — None, возвращает имя файла текущего изображения фона.

>>> screen.bgpic()
'nopic'
>>> screen.bgpic("landscape.gif")
>>> screen.bgpic()
"landscape.gif"
turtle.clear()

Примечание

Этот метод TurtleScreen доступен как глобальная функция только под именем clearscreen. Глобальная функция clear — это другая функция, полученная из метода Turtle clear.

turtle.clearscreen()

Удаляет все рисунки и всех черепах из TurtleScreen. Сбрасывает теперь пустой TurtleScreen в его начальное состояние: белый фон, без изображения фона, без привязок событий и отслеживания включено.

turtle.reset()

Примечание

Этот метод TurtleScreen доступен как глобальная функция только под именем resetscreen. Глобальная функция reset — это другая функция, полученная из метода Turtle reset.

turtle.resetscreen()

Сбрасывает все черепахи на экране до их начального состояния.

turtle.screensize(canvwidth=None, canvheight=None, bg=None)
Параметры:
  • canvwidth – положительное целое число, новая ширина холста в пикселях
  • canvheight – положительное целое число, новая высота холста в пикселях
  • bg – строка цвета или кортеж цвета, новый цвет фона

Если аргументов нет, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором рисуют черепахи. Не изменяйте окно рисования. Чтобы увидеть скрытые части холста, используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые были вне холста раньше.

>>> screen.screensize()
(400, 300)
>>> screen.screensize(2000,1500)
>>> screen.screensize()
(2000, 1500)

Например, для поиска ошибочно сбежавшей черепахи ;-)

turtle.setworldcoordinates(llx, lly, urx, ury)
Параметры:
  • llx – число, координата x левого нижнего угла холста
  • lly – число, координата y левого нижнего угла холста
  • urx – число, координата x правого верхнего угла холста
  • ury – число, координата y правого верхнего угла холста

Настройка пользовательской системы координат и переход в режим «мир», если необходимо. Это выполняет screen.reset(). Если режим «мир» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.

ВНИМАНИЕ: в пользовательских системах координат углы могут быть искажены.

>>> 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

Управление анимацией

turtle.delay(delay=None)
Параметры:

delay – положительное целое число

Устанавливает или возвращает задержку рисования в миллисекундах. (Это примерно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.

Необязательный аргумент:

>>> screen.delay()
10
>>> screen.delay(5)
>>> screen.delay()
5
turtle.tracer(n=None, delay=None)
Параметры:
  • n – неотрицательное целое число
  • delay – неотрицательное целое число

Включает/выключает анимацию черепах и устанавливает задержку для обновления рисунков. Если n задано, только каждый n-й регулярный экранный апдейт действительно выполняется. (Можно использовать для ускорения рисования сложных графиков.) При вызове без аргументов возвращает текущее сохраненное значение n. Второй аргумент устанавливает значение задержки (см. delay()).

>>> screen.tracer(8, 25)
>>> dist = 2
>>> for i in range(200):
...     fd(dist)
...     rt(90)
...     dist += 2
turtle.update()

Выполняет обновление TurtleScreen. Используется, когда tracer выключен.

См. также метод RawTurtle/Turtle speed().

Использование событий экрана

turtle.listen(xdummy=None, ydummy=None)

Переводит фокус на TurtleScreen (для сбора событий нажатия клавиш). Вводятся фиктивные аргументы, чтобы иметь возможность передавать listen() методу onclick.

turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key)
Параметры:
  • fun – функция без аргументов или None
  • key – строка: клавиша (например, «a») или символ клавиши (например, «space»)

Связывает fun с событием отпускания клавиши. Если fun — None, удаляются привязки событий. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. метод listen().)

>>> def f():
...     fd(50)
...     lt(60)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.onkeypress(fun, key=None)
Параметры:
  • fun – функция без аргументов или None
  • key – строка: клавиша (например, «a») или символ клавиши (например, «space»)

Связывает fun с событием нажатия клавиши, если клавиша задана, или с любым событием нажатия клавиши, если клавиша не задана. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. метод 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)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызываться с координатами нажатой точки на холсте
  • btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
  • add – True или False – если True, новая привязка будет добавлена, в противном случае она заменит предыдущую привязку

Связывает fun с событиями щелчка мышью на этом экране. Если fun — None, существующие привязки удаляются.

Пример для экземпляра TurtleScreen с именем screen и экземпляра Turtle с именем turtle:

>>> 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

Примечание

Этот метод TurtleScreen доступен как глобальная функция только под именем onscreenclick. Глобальная функция onclick — это другая функция, полученная из метода Turtle onclick.

turtle.ontimer(fun, t=0)
Параметры:
  • fun – функция без аргументов
  • t – число ≥ 0

Устанавливает таймер, который вызывает fun через t миллисекунд.

>>> 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()

Запускает цикл обработки событий — вызов функции Tkinter’s mainloop. Должен быть последней строкой в программе графики черепах. Не должен использоваться, если скрипт запускается из IDLE в режиме -n (Без подпроцесса) — для интерактивного использования графики черепах.

>>> screen.mainloop()

Способы ввода

turtle.textinput(title, prompt)
Параметры:
  • title – строка
  • prompt – строка

Отображает диалоговое окно для ввода строки. Параметр title – заголовок диалогового окна, prompt – текст, обычно описывающий, какую информацию необходимо ввести. Возвращает введённую строку. Если диалоговое окно было закрыто, возвращает None.

>>> screen.textinput("NIM", "Name of first player:")
turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
Параметры:
  • title – строка
  • prompt – строка
  • default – число (необязательно)
  • minval – число (необязательно)
  • maxval – число (необязательно)

Отображает диалоговое окно для ввода числа. title – заголовок диалогового окна, prompt – текст, обычно описывающий, какое числовое значение требуется ввести. default: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимальное значение для ввода. Вводимое число должно находиться в диапазоне minval .. maxval, если эти значения заданы. Если нет, выводится подсказка, и диалоговое окно остаётся открытым для исправления. Возвращает введённое число. Если диалоговое окно было закрыто, возвращает None.

>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)

Настройки и специальные методы

turtle.mode(mode=None)
Параметры:

mode – одна из строк “standard”, “logo” или “world”

Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если mode не задан, возвращает текущий режим.

Режим “standard” совместим со старой turtle. Режим “logo” совместим с большинством графических программ Logo. Режим “world” использует определённые пользователем «координаты мира». Внимание: в этом режиме углы искажаются, если x/y единичное отношение не равно 1.

Режим

Начальное направление черепахи

положительные углы

“standard”

вправо (восток)

против часовой стрелки

“logo”

вверх (север)

по часовой стрелке

>>> mode("logo")   # resets turtle heading to north
>>> mode()
'logo'
turtle.colormode(cmode=None)
Параметры:

cmode – одно из значений 1.0 или 255

Возвращает цветной режим или устанавливает его в 1.0 или 255. В дальнейшем значения r, g, b цветовых тройных значений должны находиться в диапазоне 0..*cmode*.

>>> 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()

Возвращает холст этой TurtleScreen. Полезно для специалистов, которые знают, что делать с холстом Tkinter.

>>> cv = screen.getcanvas()
>>> cv
<turtle.ScrolledCanvas object ...>
turtle.getshapes()

Возвращает список имён всех доступных в настоящее время форм черепах.

>>> screen.getshapes()
['arrow', 'blank', 'circle', ..., 'turtle']
turtle.register_shape(name, shape=None)
turtle.addshape(name, shape=None)

Существует три различных способа вызова этой функции:

  1. name – имя gif-файла, и shape – None: установить соответствующую форму изображения.

    >>> screen.register_shape("turtle.gif")
    

    Примечание

    Формы изображения не поворачиваются при повороте черепахи, поэтому они не отображают направление черепахи!

  2. name – произвольная строка, а shape – кортеж пар координат: установить соответствующую форму многоугольника.

    >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))
    
  3. name – произвольная строка, а shape – объект (составной) Shape: установить соответствующую составную форму.

Добавляет форму черепахи в список форм TurtleScreen. Только таким образом зарегистрированные формы могут использоваться, вызывая команду shape(shapename).

turtle.turtles()

Возвращает список черепах на экране.

>>> for turtle in screen.turtles():
...     turtle.color("red")
turtle.window_height()

Возвращает высоту окна черепахи.

>>> screen.window_height()
480
turtle.window_width()

Возвращает ширину окна черепахи.

>>> screen.window_width()
640

Методы, специфичные для экрана, не унаследованные от TurtleScreen

turtle.bye()

Закрывает окно графики черепахи.

turtle.exitonclick()

Привязывает метод bye() к щелчкам мыши на экране.

Если значение “using_IDLE” в словаре настроек равно False (значение по умолчанию), также переходит к основному циклу. Примечание: Если используется IDLE с переключателем -n (без подпроцесса), это значение следует установить на True в turtle.cfg. В этом случае собственный цикл IDLE также активен для клиентского скрипта.

turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])

Устанавливает размер и положение основного окна. Значения аргументов по умолчанию хранятся в словаре настроек и могут быть изменены через файл turtle.cfg.

Параметры:
  • width – если целое число, размер в пикселях, если число с плавающей точкой, доля экрана; значение по умолчанию – 50% экрана
  • height – если целое число, высота в пикселях, если число с плавающей точкой, доля экрана; значение по умолчанию – 75% экрана
  • startx – если положительное, начальное положение в пикселях от левого края экрана, если отрицательное – от правого края, если None, центр окна по горизонтали
  • starty – если положительное, начальное положение в пикселях от верхнего края экрана, если отрицательное – от нижнего края, если None, центр окна по вертикали
>>> 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)
Параметры:

titlestring – строка, отображаемая в строке заголовка окна графики черепахи

Устанавливает заголовок окна черепахи на titlestring.

>>> screen.title("Welcome to the turtle zoo!")

Общедоступные классы

class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas)
Параметры:

холст – tkinter.Canvas, ScrolledCanvas или TurtleScreen

Создаёт черепаху. Черепаха имеет все методы, описанные выше, как «методы черепахи/RawTurtle».

class turtle.Turtle

Подкласс RawTurtle, имеет тот же интерфейс, но рисует на стандартном объекте Screen, автоматически созданном при первом вызове.

class turtle.TurtleScreen(cv)
Параметры:

cv – tkinter.Canvas

Обеспечивает методы, ориентированные на экран, такие как bgcolor() и другие, описанные выше.

class turtle.Screen

Подкласс TurtleScreen, с добавленными четырьмя методами.

class turtle.ScrolledCanvas(master)
Параметры:

master – какой-либо виджет Tkinter для размещения ScrolledCanvas, т.е. холст Tkinter со встроенными полосами прокрутки

Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве игрового поля для черепах.

class turtle.Shape(type_, data)
Параметры:

type_ – одно из строк “polygon”, “image”, “compound”

Структура данных, моделирующая фигуры. Пара (type_, data) должна соответствовать этому спецификации:

type_

data

“polygon”

многоугольник-кортеж, т.е. кортеж пар координат

“image”

изображение (в этом формате используется только внутри!)

“compound”

None (сложная фигура должна быть построена с использованием метода addcomponent())

addcomponent(poly, fill, outline=None)
Параметры:
  • poly – многоугольник, т.е. кортеж пар чисел
  • fill – цвет заливки poly
  • outline – цвет контура poly (если задан)

Пример:

>>> 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()

См. Сложные фигуры.

class turtle.Vec2D(x, y)

Класс двумерного вектора, используемый как вспомогательный класс для реализации графики черепахи. Может быть полезен и для программ с графикой черепахи. Наследуется от кортежа, поэтому вектор — это кортеж!

Предоставляет (для векторов a, b, числа k):

  • a + b сложение векторов
  • a - b вычитание векторов
  • a * b скалярное произведение
  • k * a и a * k умножение на скаляр
  • abs(a) модуль вектора a
  • a.rotate(angle) вращение

Описание

Объект черепахи рисует на объекте экрана, и в интерфейсе черепахи есть ряд ключевых классов, которые можно использовать для их создания и взаимосвязи.

Экземпляр Turtle автоматически создаст экземпляр Screen, если он ещё не существует.

Turtle — подкласс RawTurtle, который не автоматически создаёт область рисования — холст необходимо предоставить или создать для него. Холст может быть tkinter.Canvas, ScrolledCanvas или TurtleScreen.

TurtleScreen — основная область рисования для черепахи. Screen — подкласс TurtleScreen, и включает некоторые дополнительные методы для управления его внешним видом (включая размер и заголовок) и поведением. Конструктор TurtleScreen нуждается в tkinter.Canvas или ScrolledCanvas в качестве аргумента.

Функциональный интерфейс для графики черепахи использует различные методы Turtle и TurtleScreen/Screen. За кулисами объект экрана автоматически создаётся всякий раз, когда вызывается функция, полученная от метода Screen. Аналогично, объект черепахи автоматически создаётся всякий раз, когда вызывается любая функция, полученная от метода Turtle.

Для использования нескольких черепах на одном экране необходимо использовать объектно-ориентированный интерфейс.

Справка и настройка

Как использовать справку

Открытые методы классов Screen и Turtle подробно документированы с помощью docstring. Поэтому их можно использовать как онлайн-справку с помощью средств Python:

  • При использовании IDLE всплывающие подсказки показывают сигнатуры и первые строки docstring вызванных функций/методов.
  • Вызов help() для методов или функций отображает docstring:

    >>> 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()
    
  • Docstring функций, производных от методов, имеют изменённую форму:

    >>> 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()
    

Эти изменённые docstring создаются автоматически вместе с определениями функций, производных от методов, во время импорта.

Перевод docstring на разные языки

Существует утилита для создания словаря, ключами которого являются имена методов, а значениями — docstring открытых методов классов Screen и Turtle.

turtle.write_docstringdict(filename='turtle_docstringdict')
Параметры:

filename – строка, используемая в качестве имени файла

Создаёт и записывает словарь docstring в скрипт Python с заданным именем файла. Эту функцию необходимо вызывать явно (она не используется классами графики черепах). Словарь docstring будет записан в скрипт Python filename.py. Он предназначен для использования в качестве шаблона для перевода docstring на разные языки.

Если вы (или ваши студенты) хотите использовать turtle со справкой на родном языке, вам необходимо перевести docstring и сохранить полученный файл, например, как turtle_docstringdict_german.py.

Если в вашем файле turtle.cfg есть соответствующая запись, этот словарь будет загружен во время импорта и заменит оригинальные английские docstring.

На момент написания этой документации существуют словари docstring на немецком и итальянском языках. (Запросы, пожалуйста, отправляйте на glingl@aon.at.)

Как настроить Screen и Turtles

Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля черепах, чтобы сохранить максимально возможную совместимость с ним.

Если вы хотите использовать другую конфигурацию, которая лучше отражает особенности этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg, который будет загружен во время импорта и изменит конфигурацию в соответствии с его настройками.

Встроенная конфигурация соответствует следующему turtle.cfg:

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

Краткое объяснение выбранных записей:

  • Первые четыре строки соответствуют аргументам метода Screen.setup.
  • Строки 5 и 6 соответствуют аргументам метода Screen.screensize.
  • shape может быть любой из встроенных фигур, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте help(shape).
  • Если вы хотите использовать цвет заливки (т.е. сделать черепаху прозрачной), вы должны написать fillcolor = "" (но все непустые строки не должны содержать кавычек в файле cfg).
  • Если вы хотите отобразить состояние черепахи, вы должны использовать resizemode = auto.
  • Если вы установите, например, language = italian, docstringdict turtle_docstringdict_italian.py будет загружен во время импорта (если он присутствует в пути импорта, например, в той же директории, что и turtle).
  • Записи exampleturtle и examplescreen определяют имена этих объектов так, как они встречаются в docstring. Преобразование docstring методов в docstring функций удалит эти имена из docstring.
  • using_IDLE: Установите это значение в True если вы регулярно работаете с IDLE и его переключателем -n («без подпроцесса»). Это предотвратит exitonclick() от входа в основной цикл.

В каталоге, где хранится turtle, может быть файл turtle.cfg, а также дополнительный в текущей рабочей директории. Последний переопределит настройки первого.

Каталог Lib/turtledemo содержит файл turtle.cfg. Вы можете изучить его в качестве примера и увидеть его влияние при запуске демо-приложений (предпочтительно не изнутри просмотрщика демо).

turtledemo — Демо-скрипты

Пакет turtledemo включает набор демо-скриптов. Эти скрипты можно запустить и просмотреть с помощью прилагаемого просмотрщика демо следующим образом:

python -m turtledemo

В качестве альтернативы вы можете запустить демо-скрипты по отдельности. Например,

python -m turtledemo.bytedesign

В каталоге пакета turtledemo находится:

  • Просмотрщик демо __main__.py, который можно использовать для просмотра исходного кода скриптов и одновременного запуска.
  • Несколько скриптов, демонстрирующих различные функции модуля turtle. К примерам можно получить доступ через меню «Примеры». Их также можно запускать автономно.
  • Файл turtle.cfg , который служит примером написания и использования таких файлов.

Демо-скрипты:

Название

Описание

Функции

bytedesign

сложный классический шаблон графики черепах

tracer(), задержка, update()

chaos

графики динамики Верхульста, показывает, что вычисления компьютера могут давать результаты, иногда противоречащие здравому смыслу

мировые координаты

clock

аналоговые часы, показывающие время вашего компьютера

черепахи как стрелки часов, ontimer

colormixer

эксперименты с r, g, b

ondrag()

forest

3 дерева по принципу обхода в ширину

случайность

fractalcurves

кривые Гильберта и Коха

рекурсия

lindenmayer

этноматематика (индийские колам)

система L

minimal_hanoi

Ханойские башни

Прямоугольные черепахи как диски Ханойских башен (форма, размер фигуры)

nim

игра в классическую игру ним с тремя кучами палочек против компьютера.

черепахи как палочки ним, управляемые событиями (мышь, клавиатура)

paint

сверхминималистская программа рисования

onclick()

peace

элементарный пример

черепаха: вид и анимация

penrose

апериодическая плитка с дельтами и стрелами

stamp()

planet_and_moon

симуляция гравитационной системы

сложные фигуры, Vec2D

rosette

узор из статьи Википедии о графике черепах

clone(), undo()

round_dance

танцующие черепахи, вращающиеся парами в противоположных направлениях

сложные фигуры, клоны, размер фигуры, наклон, get_shapepoly, update

sorting_animate

визуальная демонстрация различных методов сортировки

простая выравнивание, случайность

tree

дерево (графическое) по принципу обхода в ширину (с использованием генераторов)

clone()

two_canvases

простой дизайн

черепахи на двух холстах

yinyang

ещё один элементарный пример

circle()

Приятного использования!

Изменения с Python 2.6

  • Методы Turtle.tracer, Turtle.window_width и Turtle.window_height были удалены. Методы с такими именами и функциональностью теперь доступны только как методы Screen. Функции, производные от этих методов, остаются доступными. (На самом деле, уже в Python 2.6 эти методы были просто дубликатами соответствующих методов TurtleScreen/Screen.)
  • Метод Turtle.fill() был удален. Поведение методов begin_fill() и end_fill() незначительно изменилось: теперь каждый процесс заполнения должен быть завершен вызовом end_fill().
  • Добавлен метод Turtle.filling. Он возвращает булево значение: True если процесс заполнения выполняется, False в противном случае. Это поведение соответствует вызову fill() без аргументов в Python 2.6.

Изменения с Python 3.0

  • Методы Turtle shearfactor(), shapetransform() и get_shapepoly() были добавлены. Таким образом, полный набор обычных линейных преобразований теперь доступен для преобразования фигур черепахи. tiltangle() был улучшен функционально: теперь его можно использовать для получения или установки угла наклона.
  • Метод Screen onkeypress() был добавлен в качестве дополнения к onkey(). Поскольку последний связывает действия с событием отпускания клавиши, был также добавлен псевдоним: onkeyrelease() для него.
  • Метод Screen.mainloop был добавлен, поэтому больше нет необходимости использовать самостоятельную функцию mainloop() при работе с объектами Screen и Turtle.
  • Были добавлены два метода ввода: Screen.textinput и Screen.numinput. Они выводят диалоговые окна ввода и возвращают строки и числа соответственно.
  • В каталог Lib/turtledemo были добавлены два скрипта-примера tdemo_nim.py и tdemo_round_dance.py.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/turtle.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API