Spec-Zone.ru › Python 3.12

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

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

Введение

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

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

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

../_images/turtle-star.png

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

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

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

Учебник

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

Начало среды черепахи

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

from turtle import *

Если вы столкнулись с ошибкой No module named '_tkinter', вам нужно установить Tk interface package на вашей системе.

Основное рисование

Отправьте черепаху вперёд на 100 шагов:

forward(100)

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

left(120)

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

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

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

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

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

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

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

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

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

home()

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

pos()

Домой находится в (0, 0).

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

clearscreen()

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

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

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

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

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

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

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

begin_fill()

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

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

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

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

end_fill()

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

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

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

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

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

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

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

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

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

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

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

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

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

import turtle as t
from random import random

for i in range(100):
    steps = int(random() * 100)
    angle = int(random() * 360)
    t.right(angle)
    t.fd(steps)

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

t.mainloop()

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

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

См. также

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

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

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

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

from turtle import Turtle
from random import random

t = Turtle()
for i in range(100):
    steps = int(random() * 100)
    angle = int(random() * 360)
    t.right(angle)
    t.fd(steps)

t.screen.mainloop()

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

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

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

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

Примечание

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

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

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

Методы TurtleScreen/Screen

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

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

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

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

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

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

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

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

distance – число

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

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

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

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

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

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

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

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

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

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

>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.setpos(60,30)
>>> turtle.pos()
(60.00,30.00)
>>> turtle.setpos((20,80))
>>> turtle.pos()
(20.00,80.00)
>>> turtle.setpos(tp)
>>> turtle.pos()
(0.00,0.00)
turtle.teleport(x, y=None, *, fill_gap=False)
Параметры:
  • x – число или None
  • y – число или None
  • fill_gap – логическое значение

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

>>> tp = turtle.pos()
>>> tp
(0.00,0.00)
>>> turtle.teleport(60)
>>> turtle.pos()
(60.00,0.00)
>>> turtle.teleport(y=10)
>>> turtle.pos()
(60.00,10.00)
>>> turtle.teleport(20, 30)
>>> turtle.pos()
(20.00,30.00)

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

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

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

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

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

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

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

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

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

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

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

режим Logo

0 - восток

0 - север

90 - север

90 - восток

180 - запад

180 - юг

270 - юг

270 - запад

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

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

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

Нарисовать окружность с заданным радиусом. Центр находится на радиус единиц влево от черепахи; 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")
>>> stamp_id = turtle.stamp()
>>> turtle.fd(50)
turtle.clearstamp(stampid)
Параметры:

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

Удалить отпечаток с заданным stampid.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

turtle.position()
turtle.pos()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

fullcircle – число

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • “shown”: True/False
  • “pendown”: True/False
  • “pencolor”: строка цвета или кортеж цвета
  • “fillcolor”: строка цвета или кортеж цвета
  • “pensize”: положительное число
  • “speed”: число в диапазоне 0..10
  • “resizemode”: «авто» или «пользователь» или «без изменения размера»
  • “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 – строка, являющаяся допустимым названием формы

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

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

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

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

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

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

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

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

>>> turtle.shapesize()
(1.0, 1.0, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
(5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
(5, 5, 8)
turtle.shearfactor(shear=None)
Параметры:

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

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

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

angle – число

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

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(30)
>>> turtle.fd(50)
>>> turtle.tilt(30)
>>> turtle.fd(50)
turtle.settiltangle(angle)
Параметры:

angle – число

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

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

Устаревшее с версии 3.1.

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

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

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

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(45)
>>> turtle.tiltangle()
45.0
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)
Параметры:
  • t11 – число (необязательно)
  • t12 – число (необязательно)
  • t21 – число (необязательно)
  • t12 – число (необязательно)

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

turtle.clearscreen()

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

turtle.reset()

Примечание

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

turtle.resetscreen()

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

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

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

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

Например, чтобы найти ошибочно вылетевшую черепаху ;-)

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

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

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

>>> screen.reset()
>>> screen.setworldcoordinates(-50,-7.5,50,7.5)
>>> for _ in range(72):
...     left(10)
...
>>> for _ in range(8):
...     left(45); fd(2)   # a regular octagon

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

>>> running = True
>>> def f():
...     if running:
...         fd(50)
...         lt(60)
...         screen.ontimer(f, 250)
>>> f()   ### makes the turtle march around
>>> running = False
turtle.mainloop()
turtle.done()

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

>>> screen.mainloop()

Методы ввода

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

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

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

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

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

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

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

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

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

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

Режим

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

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

“standard”

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

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

“logo”

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

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

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

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

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

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

Возвращает холст (Canvas) этой черепашьей области. Полезно для инсайдеров, которые знают, что делать с 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

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

turtle.bye()

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

turtle.exitonclick()

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

Если значение “using_IDLE” в словаре конфигурации равно False (значение по умолчанию), также вступает в цикл обработки событий (mainloop). Примечание: Если используется 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

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

class turtle.Turtle

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

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

cv – объект tkinter.Canvas

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

class turtle.Screen

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

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

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

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

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

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

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

type_

data

“polygon”

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

“image”

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

“compound”

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

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

Пример:

>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))
>>> s = Shape("compound")
>>> s.addcomponent(poly, "red", "blue")
>>> # ... add more components and then use register_shape()

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

class turtle.Vec2D(x, y)

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

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

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

Описание

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

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

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

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

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

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

Справочная информация и настройка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python -m turtledemo

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

python -m turtledemo.bytedesign

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

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

Сценарии демо:

Имя

Описание

Возможности

bytedesign

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

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

chaos

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

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

clock

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

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

colormixer

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

ondrag()

forest

3 дерева с использованием метода обхода в ширину

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

fractalcurves

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

рекурсия

lindenmayer

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

система Л-систем

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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/library/turtle.html

Spec-Zone.ru

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