Spec-Zone.ru › Python 3.9

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

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

Введение

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

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

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

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

../_images/turtle-star.png
from turtle import *
color('red', 'yellow')
begin_fill()
while True:
    forward(200)
    left(170)
    if abs(pos()) < 1:
        break
end_fill()
done()

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

Модуль 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) определяет объекты Turtle, которые рисуют на TurtleScreen. Его конструктор требует в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, чтобы объекты RawTurtle знали, где рисовать.

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

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

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

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

Примечание

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

Обзор доступных методов черепахи и экрана

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

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

Методы TurtleScreen/Screen

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

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

Большинство примеров в этом разделе относятся к экземпляру черепахи под названием turtle.

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

turtle.forward(distance)
turtle.fd(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 – число

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

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

angle – число (целое или с плавающей точкой)

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

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.left(angle)
turtle.lt(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)

Нарисовать окружность с заданным радиусом. Центр находится на радиус единиц влево от черепахи; 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()

Отпечатать копию формы черепахи на холст в текущей позиции черепахи. Возвращает идентификатор отпечатка, который можно использовать для его удаления, вызвав 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()

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

>>> 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 или вернуть её. Если режим изменения размера установлен на «auto», а форма черепахи — многоугольник, этот многоугольник рисуется с той же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.

>>> 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(), устанавливает оба цвета, fillcolor и 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 (outline), которые задаются 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 – число (необязательно)

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

 >>> 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 – число (необязательно)

Установить или вернуть текущий угол наклона. Если задан угол, повернуть форму черепахи в указанном направлении 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()

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

>>> 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(). Если size — None, буфер отмены отключается.

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

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

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

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

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

  1. Создайте пустой объект Shape типа “compound”.
  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. Используется, когда режим слежения выключен.

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

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

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

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

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

Привязывает 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») или символ клавиши (например, «пробел»)

Привязывает fun к событию нажатия клавиши, если задана key, или к любому событию нажатия клавиши, если key не задана. Примечание: для регистрации событий нажатия клавиш 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()

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

>>> 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”) и выполняет сброс. Если режим не задан, возвращает текущий режим.

Режим “standard” совместим со старым turtle. Режим “logo” совместим с большинством графических пакетов черепах Logo. Режим “world” использует определённые пользователем «координаты мира». Внимание: в этом режиме углы отображаются искажённо, если x/y unit-ratio не равно 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()

Закрывает окно turtlegraphics.

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

canvas – tkinter.Canvas, ScrolledCanvas или TurtleScreen

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

class turtle.Turtle

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

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

cv – tkinter.Canvas

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

class turtle.Screen

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

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

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

Используется классом 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) поворот

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как настроить экран и черепах

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

round_dance

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

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

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(). Эти всплывающие диалоговые окна ввода возвращают строки и числа соответственно.
  • В каталог Lib/turtledemo были добавлены два сценария примеров tdemo_nim.py и tdemo_round_dance.py.

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

Spec-Zone.ru

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