turtle — Черепашья графика


Введение

Черепашья графика является популярным способом знакомства с программированием для детей. Была частью оригинального языка программирования Logo, разработанного Уолли Фейрцейгом (Wally Feurzeig), Сеймуром Папертом (Seymour Papert) и Синтией Соломон (Cynthia Solomon) в 1967 году.

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

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

Модуль turtle — это расширенная реализация одноименного модуля из стандартного дистрибутива Python до версии Python 2.5.

Он пытается сохранить достоинства старого модуля turtle и быть (почти) на 100% совместимым с ним. Это означает, в первую очередь, чтобы дать возможность обучающемуся программисту использовать все команды, классы и методы в интерактивном режиме при использовании модуля из IDLE, запущенного с переключателем -n.

Модуль turtle предоставляет примитивы черепашьей графики, как объектно-ориентированными, так и процедурно-ориентированными способами. Поскольку он использует tkinter для базовой графики, ему необходима версия Python, установленная с поддержкой Tk.

Объектно-ориентированный интерфейс использует по существу два+два класса:

  1. Класс TurtleScreen определяет графические окна как площадку для рисования черепах. Его конструктору требуется аргумент tkinter.Canvas или ScrolledCanvas. Его следует использовать, когда turtle применяется как часть какого-либо приложения.

    Функция Screen() возвращает объект одиночку подкласса TurtleScreen. Функцию следует использовать, когда turtle используется как автономный инструмент для создания графики. Т. к. это объект одиночка, наследование от его класса невозможно.

    Все методы TurtleScreen/Screen также существуют как функции, т. е. как часть интерфейса, ориентированного на процедуры.

  2. RawTurtle (алиас: RawPen) определяет объекты черепахи, которые рисуются на TurtleScreen. Его конструктору требуется в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, поэтому объекты RawTurtle знают, где рисовать.

    Производным от RawTurtle является подкласс Turtle (псевдоним: Pen), который основан на «экземпляре» Screen, создаваемый автоматически, если его ещё не существует.

    Все методы RawTurtle/Turtle также существуют как функции, т. е. часть интерфейса, ориентированного на процедуры.

Процедурный интерфейс предоставляет функции, производные от методов классов Screen и Turtle. У них те же имена, что и соответствующие методы. Объект экрана создаётся автоматически при каждом вызове функции, производной от метода Screen. Объект черепахи (без имени) автоматически создаётся при каждом вызове любой функции, производной от метода черепахи.

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

Примечание

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

Обзор доступных методов Turtle и Screen

Методы Turtle

Движение черепахи
Двигаться и рисовать
Рассказать о состоянии Черепахи
Настройка и измерение
Управление Pen
Состояние рисования
Управление цветом
Заполнение
Больше контроля рисования
Состояние черепахи
Видимость
Внешний вид
Использование событий
Специальные методы Turtle

Методы 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.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)  # нарисовать полукруг
>>> turtle.position()
(0.00,240.00)
>>> turtle.heading()
180.0
turtle.dot(size=None, *color)
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()

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

>>> turtle.color("blue")
>>> turtle.stamp()
11
>>> 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):
...     turtle.stamp(); turtle.fd(30)
13
14
15
16
17
18
19
20
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.undo()

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

>>> 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 или speedstring (см. ниже)

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

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

  • «fastest»: 0
  • «fast»: 10
  • «normal»: 6
  • «slow»: 3
  • «slowest»: 1

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

Внимание: speed = 0 означает, что анимация не используется. forward/back заставляет черепаху прыгать и также влево/вправо заставляет черепаху мгновенно повернуться.

>>> 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), вектором или другой черепахой. Это зависит от начальной ориентации черепахи, которая зависит от режима — «standard»/«world» или «logo».

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

Изменить единицу измерения угла на град (также известный как gon, grade или
gradian и равный 1/100-й от прямого угла.)
>>> 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 или вернуть её. Если для resizemode установлено значение «auto», а turtleshape является polygon, этот многоугольник рисуется с одинаковой толщиной линии. Если аргумент не указан, возвращается текущий размер пера.

>>> turtle.pensize()
1
>>> turtle.pensize(10)   # отсюда нарисованы линии шириной 10
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)
Установить для fillcolor значение 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.

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

 >>> turtle.fillcolor("violet")
 >>> turtle.fillcolor()
 'violet'
 >>> turtle.pencolor()
 (50.0, 193.0, 143.0)
 >>> turtle.fillcolor((50, 193, 143))  # Целые числа, а не числа с плавающей точкой
 >>> 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) и аналогично, если используется другой формат ввода.

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

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

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

>>> 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. Изначально существуют многоугольники следующих форм: «arrow», «turtle», «circle», «square», «triangle», «classic». Чтобы узнать, как работать с формами, см. Screen метод register_shape().

>>> turtle.shape()
'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
'turtle'
turtle.resizemode(rmode=None)
Параметры:rmode – одна из строк «auto», «user», «noresize»

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

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

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-факторы растяжения и/или контура. Установить resizemode на «user». Если и только если для resizemode установлено значение «user», черепаха будет отображаться растянутой в соответствии с её факторами растяжения: 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 – число (необязательно)

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

 >>> 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.settiltangle(angle)
Параметры:angle – число

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

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.settiltangle(45)
>>> turtle.fd(50)
>>> turtle.settiltangle(-45)
>>> turtle.fd(50)

Не рекомендуется, начиная с версии 3.1.

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 не должен быть нулевым, иначе возникает ошибка. Изменяет коэффициент растяжения, коэффициент сдвига и угол наклона в соответствии с заданной матрицей.

>>> 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 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

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

>>> def turn(x, y):
...     left(180)
...
>>> onclick(turn)  # Теперь щелчок в черепаху включит её.
>>> onclick(None)  # привязка к событию будет удалена
turtle.onrelease(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
  • btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

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

>>> class MyTurtle(Turtle):
...     def glow(self,x,y):
...         self.fillcolor("red")
...     def unglow(self,x,y):
...         self.fillcolor("")
...
>>> turtle = MyTurtle()
>>> turtle.onclick(turtle.glow)     # нажав на черепаху, цвет заливки становится красным,
>>> turtle.onrelease(turtle.unglow) # отпускание превращает её в прозрачный.
turtle.ondrag(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
  • btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

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

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

>>> 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)
Параметры:size – целое число или None

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

>>> 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. Теперь добавим фигуру в список фигур экрана и используем её:

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

Примечание

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

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

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

Контроль за окном

turtle.bgcolor(*args)
Параметры:args – цвет-строка или три числа в диапазоне 0..colormode или 3-кортеж таких чисел

Установить или вернуть цвет фона экрана 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", удалить фоновое изображение, если оно есть. Если picnameNone, вернуть имя файла текущего фонового изображения.

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

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

Примечание

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

turtle.reset()
turtle.resetscreen()

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

Примечание

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

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

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

>>> 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 правого верхнего угла холста

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

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

>>> screen.reset()
>>> screen.setworldcoordinates(-50,-7.5,50,7.5)
>>> for _ in range(72):
...     left(10)
...
>>> for _ in range(8):
...     left(45); fd(2)   # обычный восьмиугольник

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

turtle.delay(delay=None)
Параметры:delay – положительное целое число

Установить или вернуть рисунок через 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()

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

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

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

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

Установить фокус на экран черепахи (в порядке собора ключевых событий). Для передачи listen() методу onclick предоставляются фиктивные аргументы.

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

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

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

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

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

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

>>> screen.onclick(turtle.goto) # Впоследствии нажатие на TurtleScreen будет
>>>                             # заставлять черепаху двигаться в точку щелчка.
>>> screen.onclick(None)        # снова удалить биндинг событий

Примечание

Метод 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()   ### заставляет черепаху маршировать вокруг
>>> running = False
turtle.mainloop()
turtle.done()

Запускает цикл событий — вызов функции основного цикла Tkinter. Должен быть последним оператором в графической программе черепахи. Не должно использоваться, если сценарий запускается из 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 — в основном определяющий текст, какую числовую информацию ввести. По умолчанию: значение по умолчанию, 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») и выполняет сброс. Если режим не задан, возвращает текущий режим.

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

Режим Начальный заголовок черепахи положительные углы
«standard» направо (восток) против часовой стрелки
«logo» вверх (север) по часовой стрелке
>>> mode("logo")   # сбрасывает черепаху, направляющуюся на север
>>> 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 объект: установить соответствующую составную форму.

Добавить фигуру черепахи в список фигур 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

Методы, специфичные для Screen, не наследуемые от 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 – если целое число, размер в пикселях, если float, доля экрана; по умолчанию 50% экрана
  • height – если целое число, высота в пикселях, если float, доля экрана; по умолчанию 75% экрана
  • startx – если положителен, начальная позиция в пикселях от левого края экрана, если отрицательный от правого края, если None, центрировать окно по горизонтали
  • starty – если положителен, начальная позиция в пикселях от верхнего края экрана, если отрицательный от нижнего края, если None, центрировать окно по вертикали
>>> screen.setup (width=200, height=200, startx=0, starty=0)
>>>              # устанавливает окно в 200x200 пикселей, в левом верхнем углу экрана
>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
>>>              # устанавливает окно на 75% экрана на 50% экрана и центров
turtle.title(titlestring)
Параметры:titlestring – строка, которая показана в строке заголовка черепахи графического окна

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

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

Общественные классы

class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas)
Параметры:canvastkinter.Canvas, ScrolledCanvas или TurtleScreen

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

class turtle.Turtle

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

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

Предоставляет методы, ориентированные на экран, такие как setbg() и т. д., описанные выше.

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")
>>> # ... добавить больше компонентов и затем использовать register_shape()

См. Составные формы.

class turtle.Vec2D(x, y)

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

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

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

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

Как пользоваться помощью

Публичные методы классов Screen и Turtle подробно документируются с помощью докстрингов. Таким образом, они могут использоваться как онлайн-справки через справочные средства Python:

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

  • Вызов help() по методам или функциям отображает докстринги:

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

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

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

Перевод докстрингов на различные языки

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

turtle.write_docstringdict(filename="turtle_docstringdict")
Параметры:filename – строка, используемая как имя файла

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

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

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

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

Руководство по настройке Screen и Turtles

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

Если вы хотите использовать другую конфигурацию, которая лучше отражает особенности данного модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации 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 может быть любой из встроенных фигур, например: arrow, turtle и т.д. Для получения дополнительной информации выполните help(shape).
  • Если вы не хотите использовать цвет заливки (т. е. сделать черепаху прозрачной), вы должны написать fillcolor = "" (но все заполненный строки не должны содержать кавычек в cfg-файле).
  • Если вы хотите отразить состояние черепахи, вы должны использовать resizemode = auto.
  • Если установлен, например, language = italian докстринг dict turtle_docstringdict_italian.py будет загружен во время импорта (если присутствует в пути импорта, например, в том же каталоге, что и turtle.)
  • Записи exampleturtle и examplescreen определяют имена этих объектов по мере их появления в докстрингах. Преобразование method-докстрингов в function-докстрингов удалит эти имена из докстрингов.
  • 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. Доступ к примерам можно получить из меню «Examples». Они также могут выполняться автономно.
  • Файл turtle.cfg, служит примером написания и использования таких файлов.

Демонстрационные сценарии:

Имя Описание Особенности
bytedesign сложный классический черепаший графический шаблон tracer(), delay, 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
round_dance танцующие черепахи вращаются попарно в противоположном направлении составные фигуры, клонировать форму, наклонять, get_shapepoly, обновлять
sorting_animate наглядная демонстрация различных способов сортировки простое выравнивание, рандомизация
tree (графическое) первое дерево ширины (с использованием генераторов) clone()
two_canvases простой дизайн черепахи на двух полотнах
wikipedia узор из статьи википедии о черепашьей графики clone(), undo()
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(), Turtle.shapetransform() и Turtle.get_shapepoly(). Таким образом, теперь доступно полное множество обычных линейных преобразований для преобразования форм черепахи. Функциональность Turtle.tiltangle() была расширена: теперь её можно использовать для получения или установки угла наклона. Turtle.settiltangle() устарел.
  • Метод Screen.onkeypress() был добавлен в качестве дополнения к Screen.onkey(), который фактически связывает действия с событием отпускания клавиши. Соответственно, у последнего есть псевдоним: Screen.onkeyrelease().
  • Добавлен метод Screen.mainloop(). Поэтому при работе только с объектами Screen и Turtle нельзя больше дополнительно импортировать mainloop().
  • Добавлены два метода ввода Screen.textinput() и Screen.numinput(). Эти всплывающие диалоговые окна ввода и возвращают строки и цифры соответственно.
  • В каталог tdemo_nim.py добавлены два примера сценариев tdemo_round_dance.py и Lib/turtledemo.