Spec-Zone.ru › Python 3.10

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

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

Введение

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

Представьте себе роботизированную черепаху, начинающую с координат (0, 0) в системе координат x-y. После 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.

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

Методы TurtleScreen/Screen

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

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

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

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

turtle.forward(distance)
turtle.fd(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)
Параметры

расстояние – число

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

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

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

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

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.left(angle)
turtle.lt(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)
Параметры

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

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

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

режим логотипа

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)
Параметры
  • радиус – число
  • угол – число (или None)
  • шаги – целое число (или None)

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

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

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

Нарисовать круглое пятно диаметром размер, используя цвет. Если размер не задан, используется максимальное значение из 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)
Параметры

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

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

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

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

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

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

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

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

turtle.position()
turtle.pos()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

fullcircle – число

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

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

Change angle measurement unit to grad (also known as gon,
grade, or gradian and equals 1/100-th of the right angle.)
>>> turtle.degrees(400.0)
>>> turtle.heading()
100.0
>>> turtle.degrees(360)
>>> turtle.heading()
90.0
turtle.radians()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
>>> sorted(turtle.pen().items())
[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
 ('shearfactor', 0.0), ('shown', True), ('speed', 9),
 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())[:3]
[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
turtle.isdown()

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

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

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

turtle.pencolor(*args)

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

Разрешены четыре формата ввода:

pencolor()

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

pencolor(colorstring)

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

pencolor((r, g, b))

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

pencolor(r, g, b)

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

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

 >>> colormode()
 1.0
 >>> turtle.pencolor()
 'red'
 >>> turtle.pencolor("brown")
 >>> turtle.pencolor()
 'brown'
 >>> tup = (0.2, 0.8, 0.55)
 >>> turtle.pencolor(tup)
 >>> turtle.pencolor()
 (0.2, 0.8, 0.5490196078431373)
 >>> colormode(255)
 >>> turtle.pencolor()
 (51.0, 204.0, 140.0)
 >>> turtle.pencolor('#32c18f')
 >>> turtle.pencolor()
 (50.0, 193.0, 143.0)
turtle.fillcolor(*args)

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

Разрешены четыре формата ввода:

fillcolor()

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

fillcolor(colorstring)

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

fillcolor((r, g, b))

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

fillcolor(r, g, b)

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

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

 >>> turtle.fillcolor("violet")
 >>> turtle.fillcolor()
 'violet'
 >>> turtle.pencolor()
 (50.0, 193.0, 143.0)
 >>> turtle.fillcolor((50, 193, 143))  # Integers, not floats
 >>> turtle.fillcolor()
 (50.0, 193.0, 143.0)
 >>> turtle.fillcolor('#ffffff')
 >>> turtle.fillcolor()
 (255.0, 255.0, 255.0)
turtle.color(*args)

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

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

color()

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

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

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

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

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

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

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

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

Заливка

turtle.filling()

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

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

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

turtle.end_fill()

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

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

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

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

turtle.reset()

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

>>> turtle.goto(0,-22)
>>> turtle.left(100)
>>> turtle.position()
(0.00,-22.00)
>>> turtle.heading()
100.0
>>> turtle.reset()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.clear()

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

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

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

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

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

Видимость

turtle.hideturtle()
turtle.ht()

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

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

Сделать черепаху видимой.

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

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

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

Внешний вид

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

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

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

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

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

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

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

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

>>> turtle.resizemode()
'noresize'
>>> turtle.resizemode("auto")
>>> turtle.resizemode()
'auto'
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)
Параметры
  • stretch_wid – положительное число
  • stretch_len – положительное число
  • outline – положительное число

Возврат или установка атрибутов пера stretchfactors x/y и/или контура. Устанавливает режим изменения размера на «пользователь». Если и только если режим изменения размера установлен на «пользователь», черепаха будет отображаться растянутой в соответствии со своими stretchfactor: stretch_wid — stretchfactor, перпендикулярный ее ориентации, stretch_len — stretchfactor в направлении ее ориентации, 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 задан, повернуть форму черепахи в направлении, указанном 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 — это другая функция, полученная из метода черепахи 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 правого верхнего угла холста

Устанавливает пользовательскую систему координат и переключается на режим «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)   # 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») или символ клавиши (например, «space»)

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

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

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

>>> def f():
...     fd(50)
...
>>> screen.onkey(f, "Up")
>>> screen.listen()
turtle.onclick(fun, btn=1, add=None)
turtle.onscreenclick(fun, btn=1, add=None)
Параметры
  • fun – функция с двумя аргументами, которая будет вызываться с координатами нажатой точки на холсте
  • btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
  • add – True или False – если True, новая привязка будет добавлена, в противном случае она заменит предыдущую привязку

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

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

>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will
>>>                             # make the turtle move to the clicked point.
>>> screen.onclick(None)        # remove event binding again

Примечание

Этот метод TurtleScreen доступен как глобальная функция только под именем onscreenclick. Глобальная функция onclick — это другая функция, полученная из метода черепахи 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. Должно быть последней строкой в программе графики черепах. Не должно использоваться, если сценарий запускается из IDLE в режиме -n (без дочернего процесса) — для интерактивного использования графики черепах.

>>> screen.mainloop()

Методы ввода

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

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

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

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

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

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

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

mode – одна из строк “стандарт”, “логотип” или “мир”

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

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

Режим

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

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

“стандарт”

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

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

“логотип”

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

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

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

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

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

>>> screen.colormode(1)
>>> turtle.pencolor(240, 160, 80)
Traceback (most recent call last):
     ...
TurtleGraphicsError: bad color sequence: (240, 160, 80)
>>> screen.colormode()
1.0
>>> screen.colormode(255)
>>> screen.colormode()
255
>>> turtle.pencolor(240,160,80)
turtle.getcanvas()

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

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

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

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

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

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

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

    Примечание

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

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

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

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

turtle.turtles()

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

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

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

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

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

>>> screen.window_width()
640

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

turtle.bye()

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

turtle.exitonclick()

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

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

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

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

Параметры
  • width – если целое число, размер в пикселях, если число с плавающей точкой, доля экрана; по умолчанию 50% экрана
  • height – если целое число, высота в пикселях, если число с плавающей точкой, доля экрана; по умолчанию 75% экрана
  • startx – если положительное, начальная позиция в пикселях от левого края экрана, если отрицательное — от правого края, если None, расположить окно по горизонтали по центру
  • starty – если положительное, начальная позиция в пикселях от верхнего края экрана, если отрицательное — от нижнего края, если None, расположить окно по вертикали по центру
>>> screen.setup (width=200, height=200, startx=0, starty=0)
>>>              # sets window to 200x200 pixels, in upper left of screen
>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)
>>>              # sets window to 75% of screen by 50% of screen and centers
turtle.title(titlestring)
Параметры

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

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

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

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

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

canvas – tkinter.Canvas, ScrolledCanvas или TurtleScreen

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

class turtle.Turtle

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

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

cv – tkinter.Canvas

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

class turtle.Screen

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

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

master – какой-либо виджет Tkinter для размещения ScrolledCanvas, т.е. Tkinter-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 = ((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 подробно документированы с помощью docstring. Так что их можно использовать в качестве онлайн-справки через средства справки Python:

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

    >>> help(Screen.bgcolor)
    Help on method bgcolor in module turtle:
    
    bgcolor(self, *args) unbound turtle.Screen method
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
    
          >>> screen.bgcolor("orange")
          >>> screen.bgcolor()
          "orange"
          >>> screen.bgcolor(0.5,0,0.5)
          >>> screen.bgcolor()
          "#800080"
    
    >>> help(Turtle.penup)
    Help on method penup in module turtle:
    
    penup(self) unbound turtle.Turtle method
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        >>> turtle.penup()
    
  • Docstring функций, производных от методов, имеют изменённую форму:

    >>> help(bgcolor)
    Help on function bgcolor in module turtle:
    
    bgcolor(*args)
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
        Example::
    
          >>> bgcolor("orange")
          >>> bgcolor()
          "orange"
          >>> bgcolor(0.5,0,0.5)
          >>> bgcolor()
          "#800080"
    
    >>> help(penup)
    Help on function penup in module turtle:
    
    penup()
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        Example:
        >>> penup()
    

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

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

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

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

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

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

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

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

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

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

Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля 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 определяют имена этих объектов, как они встречаются в docstring. Преобразование docstring метода в docstring функции удалит эти имена из docstring.
  • using_IDLE: Установите это в True , если вы регулярно работаете с IDLE и его переключателем -n (“no subprocess”). Это предотвратит выполнение exitonclick() в главном цикле.

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

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

turtledemo — Сценарии демонстрации

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

python -m turtledemo

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

python -m turtledemo.bytedesign

В каталоге пакета turtledemo содержатся:

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

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

Имя

Описание

Функции

bytedesign

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

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

chaos

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

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

clock

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

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

colormixer

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

ondrag()

forest

3 дерева, построенные по принципу обхода в ширину

рандомизация

fractalcurves

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

рекурсия

lindenmayer

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

L-система

minimal_hanoi

Башни Ханой

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

nim

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

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

paint

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

onclick()

peace

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

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

penrose

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

stamp()

planet_and_moon

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

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

rosette

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

clone(), undo()

round_dance

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

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

sorting_animate

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

простая выравнивание, рандомизация

tree

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

clone()

two_canvases

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

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

yinyang

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

circle()

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

Изменения с момента Python 2.6

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

Изменения с момента Python 3.0

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

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

Spec-Zone.ru

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