Spec-Zone.ru › Python 3.5

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

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

1. Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

2.2. Методы TurtleScreen/Screen

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

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

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

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

turtle.forward(distance)
turtle.fd(distance)
Параметры: distance – число (целое или с плавающей точкой)

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

>>> turtle.position()
(0.00,0.00)
>>> turtle.forward(25)
>>> turtle.position()
(25.00,0.00)
>>> turtle.forward(-75)
>>> turtle.position()
(-50.00,0.00)
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
Параметры: distance – число

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

>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
>>> turtle.position()
(-30.00,0.00)
turtle.right(angle)
turtle.rt(angle)
Параметры: angle – число (целое или с плавающей точкой)

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

>>> turtle.heading()
22.0
>>> turtle.right(45)
>>> turtle.heading()
337.0
turtle.left(angle)
turtle.lt(angle)
Параметры: angle – число (целое или с плавающей точкой)

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

>>> turtle.heading()
22.0
>>> turtle.left(45)
>>> turtle.heading()
67.0
turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)
Параметры:
  • x – число или пара/вектор чисел
  • y – число или None

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

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

>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.setpos(60,30)
>>> turtle.pos()
(60.00,30.00)
>>> turtle.setpos((20,80))
>>> turtle.pos()
(20.00,80.00)
>>> turtle.setpos(tp)
>>> turtle.pos()
(0.00,0.00)
turtle.setx(x)
Параметры: x – число (целое или с плавающей точкой)

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

>>> turtle.position()
(0.00,240.00)
>>> turtle.setx(10)
>>> turtle.position()
(10.00,240.00)
turtle.sety(y)
Параметры: y – число (целое или с плавающей точкой)

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

>>> turtle.position()
(0.00,40.00)
>>> turtle.sety(-10)
>>> turtle.position()
(0.00,-10.00)
turtle.setheading(to_angle)
turtle.seth(to_angle)
Параметры: to_angle – число (целое или с плавающей точкой)

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

стандартный режим режим LOGO
0 - восток 0 - север
90 - север 90 - восток
180 - запад 180 - юг
270 - юг 270 - запад
>>> turtle.setheading(90)
>>> turtle.heading()
90.0
turtle.home()

Переместите черепаху в начало координат – координаты (0,0) – и установите ее направление на исходное направление (которое зависит от режима, см. mode()).

>>> turtle.heading()
90.0
>>> turtle.position()
(0.00,-10.00)
>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
turtle.circle(radius, extent=None, steps=None)
Параметры:
  • radius – число
  • extent – число (или None)
  • steps – целое число (или None)

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

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

>>> turtle.home()
>>> turtle.position()
(0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(50)
>>> turtle.position()
(-0.00,0.00)
>>> turtle.heading()
0.0
>>> turtle.circle(120, 180)  # 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()

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

>>> turtle.color("blue")
>>> turtle.stamp()
11
>>> turtle.fd(50)
turtle.clearstamp(stampid)
Параметры: stampid – целое число, должно быть возвращенным значением предыдущего вызова stamp()

Удалить штамп с заданным stampid.

>>> turtle.position()
(150.00,-0.00)
>>> turtle.color("blue")
>>> astamp = turtle.stamp()
>>> turtle.fd(50)
>>> turtle.position()
(200.00,-0.00)
>>> turtle.clearstamp(astamp)
>>> turtle.position()
(200.00,-0.00)
turtle.clearstamps(n=None)
Параметры: n – целое число (или None)

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

>>> for i in range(8):
...     turtle.stamp(); turtle.fd(30)
13
14
15
16
17
18
19
20
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.undo()

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

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

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

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

3.3. Настройки для измерения

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

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

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

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”: «авто» или «пользователь» или «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

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

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'
>>> col = turtle.pencolor()
>>> col
(50.0, 193.0, 143.0)
>>> turtle.fillcolor(col)
>>> 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().

3.4.3. Заливка

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

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

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)

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

3.5.1. Видимость

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

3.5.2. Внешний вид

turtle.shape(name=None)
Параметры: name – строка, являющаяся допустимым именем фигуры

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

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

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

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

resizemode(“user”) вызывается функцией shapesize() при использовании с аргументами.

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

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

>>> turtle.shapesize()
(1.0, 1.0, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
(5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
(5, 5, 8)
turtle.shearfactor(shear=None)
Параметры: shear – число (необязательно)

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

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

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

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(30)
>>> turtle.fd(50)
>>> turtle.tilt(30)
>>> turtle.fd(50)
END_OF_DOCUMENT_MARKER
turtle.settiltangle(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)
Параметры: угол – число (необязательно)

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

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

>>> turtle = Turtle()
>>> turtle.shape("square")
>>> turtle.shapesize(4,2)
>>> turtle.shearfactor(-0.5)
>>> turtle.shapetransform()
(4.0, -1.0, -0.0, 2.0)
turtle.get_shapepoly()

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

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

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

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

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

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

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

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

>>> turtle.ondrag(turtle.goto)

После этого щелчок и перетаскивание черепахи перемещают её по экрану, создавая рисунки (если перо опустил).

3.7. Специальные методы черепахи

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

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

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

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

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

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

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

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

    Например:

    >>> s = Shape("compound")
    >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))
    >>> s.addcomponent(poly1, "red", "blue")
    >>> poly2 = ((0,0),(10,-5),(-10,-5))
    >>> s.addcomponent(poly2, "blue", "red")
    
  3. Теперь добавьте Shape в список форм экрана и используйте его:

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

Примечание

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

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

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

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

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

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

>>> screen.bgcolor("orange")
>>> screen.bgcolor()
'orange'
>>> screen.bgcolor("#800080")
>>> screen.bgcolor()
(128.0, 0.0, 128.0)
turtle.bgpic(picname=None)
Параметры: имя_изображения – строка, имя gif-файла или "nopic", или None

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

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

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

Примечание

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

turtle.reset()
turtle.resetscreen()

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.4. Методы ввода

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)

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

turtle.mode(mode=None)
Параметры: mode – одна из строк “стандарт”, “логотип” или “мир”

Установить режим черепахи (“стандарт”, “логотип” или “мир”) и выполнить сброс. Если параметр 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()

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

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

4.6. Методы, специфичные для экрана, не унаследованные от 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!")

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

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-холст со добавленными полосами прокрутки

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

class turtle.Shape(type_, data)
Параметры: type_ – одна из строк “многоугольник”, “изображение”, “составной”

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

type_ data
“многоугольник” кортеж многоугольника, т.е. кортеж пар координат
“изображение” изображение (в этой форме используется только во внутренней реализации!)
“составной” 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) вращение

6. Справка и конфигурация

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

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

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

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

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

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

6.2. Перевод строк документации на разные языки

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

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

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

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

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

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

6.3. Настройка экрана и черепах

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

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

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

width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False

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

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

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

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

7. 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 этноматематика (индийские коламы) система Л-систем
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()

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

8. Изменения с момента 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.

9. Изменения с момента 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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/turtle.html

Spec-Zone.ru

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