Содержание страницы
turtle – Черепашья графика¶turtle – Turtle graphics
Исходный код: Lib/turtle.py
Введение¶Introduction
Черепашья графика – это реализация популярных инструментов геометрического рисования, впервые представленных в Logo, разработанных Уолли Фёрзейгом, Сеймуром Пейпертом и Синтией Соломон в 1967 году.
В Python черепашья графика предоставляет представление физической «черепашки» (маленького робота с пером), которая рисует на листе бумаги на полу.
Это эффективный и проверенный способ для учащихся знакомиться с концепциями программирования и взаимодействием с программным обеспечением, поскольку он обеспечивает мгновенную видимую обратную связь. Он также предоставляет удобный доступ к графическому выводу в целом.
Рисование с помощью черепашки было изначально создано как образовательный инструмент для использования учителями в классе. Для программиста, которому нужно получить некоторый графический вывод, это может быть способом сделать это без излишних сложностей, связанных с внедрением более сложных или внешних библиотек в свою работу.
Учебное руководство¶Tutorial
Здесь следует начать новым пользователям. В этом руководстве мы рассмотрим некоторые основы рисования с помощью черепашки.
Запуск среды черепашки¶Starting a turtle environment
В оболочке Python импортируйте все объекты модуля turtle:
from turtle import *
Если вы столкнётесь с ошибкой No module named '_tkinter', вам придётся установить Tk interface package в вашу систему.
Основы рисования¶Basic drawing
Отправьте черепашку вперёд на 100 шагов:
forward(100)
Вы должны увидеть (скорее всего, в новом окне на вашем дисплее) линию, нарисованную черепашкой, направленную на восток. Измените направление черепашки так, чтобы она повернулась на 120 градусов влево (против часовой стрелки):
left(120)
Давайте продолжим, нарисовав треугольник:
forward(100)
left(120)
forward(100)
Обратите внимание, как черепашка, представленная стрелкой, указывает в разные направления по мере управления ею.
Экспериментируйте с этими командами, а также с backward() и right().
Управление пером¶Pen control
Попробуйте изменить цвет (например, color('blue')) и толщину линии (например, width(3)), а затем снова нарисуйте.
Вы также можете перемещать черепашку без рисования, подняв перо: up() перед перемещением. Чтобы снова начать рисовать, используйте down().
Позиция черепашки¶The turtle’s position
Отправьте черепашку обратно в начальную точку (полезно, если она исчезла с экрана):
home()
Домашняя позиция находится в центре экрана черепашки. Если вам когда-нибудь понадобится их узнать, получите x-y координаты черепашки с помощью:
pos()
Дом находится в (0, 0).
И через некоторое время, вероятно, будет полезно очистить окно, чтобы начать заново:
clearscreen()
Создание алгоритмических узоров¶Making algorithmic patterns
Используя циклы, можно построить геометрические узоры:
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().)
Как…¶How to…
В этом разделе рассматриваются некоторые типичные варианты использования черепашьей графики и подходы к работе с ней.
Начать как можно быстрее¶Get started as quickly as possible
Одно из удовольствий черепашьей графики – мгновенная визуальная обратная связь от простых команд. Это отличный способ познакомить детей с идеями программирования с минимальными усилиями (конечно, не только детей).
Модуль turtle делает это возможным, предоставляя всю базовую функциональность в виде функций, доступных через from turtle import *. В руководстве по черепашьей графике описан этот подход.
Стоит отметить, что многие команды черепашки имеют ещё более краткие эквиваленты, например fd() для forward(). Они особенно полезны при работе с теми, кто ещё не освоил набор текста.
Для работы черепашьей графики необходимо, чтобы в системе был установлен
Tk interface package. Имейте в виду, что это не всегда тривиально, поэтому проверьте заранее, если планируете использовать черепашью графику с учеником.
Использовать пространство имён модуля turtle¶Use the turtle module namespace
Использовать from turtle import * удобно, но учтите: он импортирует довольно большое количество объектов, и если вы занимаетесь чем-то, кроме черепашьей графики, возникает риск конфликта имён (особенно если вы используете черепашью графику в скрипте, где могут импортироваться другие модули).
Решение – использовать import turtle: fd() становится turtle.fd(), width() становится turtle.width() и так далее. (Если постоянно набирать «turtle» утомительно, используйте, например, import turtle
as t.)
Использовать черепашью графику в скрипте¶Use turtle graphics in a script
Рекомендуется использовать пространство имён модуля 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()
в конец скрипта. Теперь скрипт будет ждать завершения и не завершится, пока его не прервут, например, закрыв окно черепашьей графики.
Использовать объектно-ориентированную черепашью графику¶Use object-oriented turtle graphics
За исключением самых простых вводных целей или быстрого опробования, гораздо более привычно и эффективно использовать объектно-ориентированный подход к черепашьей графике. Например, это позволяет одновременно разместить на экране несколько черепашек.
В этом подходе различные команды черепашки являются методами объектов (в основном объектов 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, на котором существует экземпляр Turtle; он создаётся автоматически вместе с черепашкой.
Экран черепашки можно настроить, например:
t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")
Справочник по черепашьей графике¶Turtle graphics reference
Примечание
В следующей документации приведён список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент self, который здесь опущен.
Методы черепахи¶Turtle methods
- Движение черепахи
- Перемещение и рисование
- Состояние черепахи
- Настройка и измерение
- Управление пером
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительное управление рисованием
- Состояние черепахи
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
Методы TurtleScreen/Screen¶Methods of TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для Screen
Методы RawTurtle/Turtle и соответствующие функции¶Methods of RawTurtle/Turtle and corresponding functions
Большинство примеров в этом разделе ссылаются на экземпляр Turtle с именем
turtle.
Движение черепахи¶Turtle motion
- 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 – число
Перемещает черепаху назад на расстояние, противоположно направлению, в котором черепаха смотрит. Направление черепахи не меняется.
>>> 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 – число или
Noney – число или
Nonefill_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)
Рисует окружность с заданным radius. Центр находится на radius единиц левее черепахи; extent – угол – определяет, какая часть окружности рисуется. Если extent не указан, рисуется вся окружность. Если extent не является полной окружностью, одна из конечных точек дуги – это текущее положение пера. Дуга рисуется против часовой стрелки, если radius положительный, и по часовой стрелке в противном случае. В конце направление черепахи изменяется на величину extent.
Поскольку окружность аппроксимируется вписанным правильным многоугольником, steps определяет количество используемых шагов. Если не указано, вычисляется автоматически. Может использоваться для рисования правильных многоугольников.
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # нарисовать полуокружность >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
- turtle.dot(size=None, *color)¶
- Параметры:
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 или speedstring (см. ниже).
Устанавливает скорость черепашки в целое значение от 0 до 10. Если аргумент не указан, возвращает текущую скорость.
Если входное значение – число больше 10 или меньше 0.5, скорость устанавливается в 0. Speedstrings сопоставляются со значениями скорости следующим образом:
«самый быстрый»: 0
«быстрый»: 10
“обычная”: 6
“медленная”: 3
“самая медленная”: 1
Скорости от 1 до 10 обеспечивают всё более быструю анимацию рисования линий и поворотов черепашки.
Внимание: speed = 0 означает, что никакой анимации не происходит. forward/back заставляют черепашку прыгать, а left/right заставляют черепашку мгновенно поворачиваться.
>>> turtle.speed() 3 >>> turtle.speed('normal') >>> turtle.speed() 6 >>> turtle.speed(9) >>> turtle.speed() 9
Состояние черепашки¶Tell Turtle’s state
- turtle.position()¶
- turtle.pos()¶
Возвращает текущее положение черепашки (x,y) (в виде
Vec2Dвектора).>>> turtle.pos() (440.00,-0.00)
- turtle.towards(x, y=None)¶
- Параметры:
x – число или пара/вектор чисел, или экземпляр черепашки
y – число, если x – число, иначе
None
Возвращает угол между линией от положения черепашки до точки, указанной через (x,y), указанного вектора или другой черепашки. Это зависит от начальной ориентации черепашки, которая зависит от режима – “standard”/“world” или “logo”.
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
- turtle.xcor()¶
Возвращает x-координату черепашки.
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
- turtle.ycor()¶
Возвращает y-координату черепашки.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
- turtle.heading()¶
Возвращает текущий курс черепашки (значение зависит от режима черепашки, см.
mode()).>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
- turtle.distance(x, y=None)¶
- Параметры:
x – число или пара/вектор чисел, или экземпляр черепашки
y – число, если x – число, иначе
None
Возвращает расстояние от черепашки до точки (x,y), указанного вектора или указанной другой черепашки в единицах шага черепашки.
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
Настройки измерения¶Settings for measurement
- turtle.degrees(fullcircle=360.0)¶
- Параметры:
fullcircle – число
Устанавливает единицы измерения углов, то есть задаёт количество «градусов» в полном обороте. Значение по умолчанию – 360 градусов.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> # Изменить единицу измерения угла на град (также известный как гон, >>> # град, или градиан, и равная 1/100 прямого угла.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
- turtle.radians()¶
Устанавливает единицы измерения углов в радианах. Эквивалентно
degrees(2*math.pi).>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
Управление пером¶Pen control
Состояние рисования¶Drawing state
- turtle.pensize(width=None)¶
- turtle.width(width=None)¶
- Параметры:
width – положительное число
Устанавливает толщину линии в width или возвращает её. Если для resizemode установлено «auto» и форма черепашки является многоугольником, этот многоугольник рисуется с такой же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # отсюда рисуются линии шириной 10
- turtle.pen(pen=None, **pendict)¶
- Параметры:
pen – словарь, содержащий некоторые или все из перечисленных ниже ключей
pendict – один или несколько именованных аргументов, использующих перечисленные ниже ключи
Возвращает или устанавливает атрибуты пера в виде «словаря пера» со следующими парами ключ/значение:
“отображается”: True/False
“перо опущено”: True/False
“цвет пера”: строка цвета или кортеж цвета
“цвет заливки”: строка цвета или кортеж цвета
“размер пера”: положительное число
“скорость”: число от 0 до 10
“режим изменения размера”: “auto” or “user” or “noresize”
“коэффициент растяжения”: (положительное число, положительное число)
«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
Управление цветом¶Color control
- turtle.pencolor(*args)¶
Возвращает или задаёт цвет пера.
Допускаются четыре формата ввода:
pencolor()Возвращает текущий 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.
Если форма черепахи (turtleshape) является многоугольником, то контур этого многоугольника рисуется вновь заданным цветом пера.
>>> 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()Возвращает текущий 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.
Если форма черепахи (turtleshape) является многоугольником, то внутренняя область этого многоугольника закрашивается вновь заданным цветом заливки.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Целые числа, не числа с плавающей точкой >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0)
- turtle.color(*args)¶
Возвращает или задаёт цвет пера и цвет заливки.
Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:
color()Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или кортежей с описанием цвета, как в
pencolor()иfillcolor().color(colorstring),color((r,g,b)),color(r,g,b)Аргументы как в
pencolor(); устанавливает и fillcolor, и pencolor в указанное значение.color(colorstring1, colorstring2),color((r1,g1,b1), (r2,g2,b2))Эквивалентно
pencolor(colorstring1)иfillcolor(colorstring2), а также аналогично при использовании другого формата ввода.
Если форма черепахи – многоугольник, его контур и внутренняя область рисуются новыми установленными цветами.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))
См. также: метод Screen colormode().
Заливка¶Filling
- 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()
Дополнительное управление рисованием¶More drawing control
- 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 истинно, перо перемещается в правый нижний угол текста. По умолчанию move равно
False.>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
Состояние черепахи¶Turtle state
Видимость¶Visibility
- turtle.hideturtle()¶
- turtle.ht()¶
Делает черепаху невидимой. Рекомендуется делать это во время выполнения сложного рисунка, потому что скрытие черепахи заметно ускоряет рисование.
>>> turtle.hideturtle()
- turtle.isvisible()¶
Возвращает
True, если черепаха показана, иFalse, если она скрыта.>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
Внешний вид¶Appearance
- turtle.shape(name=None)¶
- Параметры:
name – a string which is a valid shapename
Устанавливает форму черепахи как форму с заданным name или, если имя не указано, возвращает имя текущей формы. Форма с именем name должна существовать в словаре форм TurtleScreen. Изначально доступны следующие многоугольные формы: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классическая». Чтобы узнать, как работать с формами, см. метод Screen
register_shape().>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
- turtle.resizemode(rmode=None)¶
- Параметры:
rmode – one of the strings “auto”, “user”, “noresize”
Устанавливает режим изменения размера в одно из значений: «авто», «пользователь», «без изменения размера». Если rmode не указан, возвращает текущий режим изменения размера. Разные режимы изменения размера имеют следующие эффекты:
“auto”: adapts the appearance of the turtle corresponding to the value of pensize.
“user”: adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), which are set by
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 – число (необязательно)
Set or return the current shearfactor. Shear the turtleshape according to the given shearfactor shear, which is the tangent of the shear angle. Do not change the turtle’s heading (direction of movement). If shear is not given: return the current shearfactor, i. e. the tangent of the shear angle, by which lines parallel to the heading of the turtle are sheared.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
- turtle.tilt(angle)¶
- Параметры:
angle – a number
Повернуть форму черепахи на 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 – a number
Поворачивает форму черепашки так, чтобы она указывала в направлении, заданном 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 не должен быть равен нулю, иначе будет вызвана ошибка. Изменяет stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
- turtle.get_shapepoly()¶
Возвращает текущий многоугольник формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
Использование событий¶Using events
- 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) # Теперь щелчок по черепашке повернёт её. >>> onclick(None) # привязка события будет удалена
- 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) # нажатие на черепашку меняет цвет заливки на красный, >>> turtle.onrelease(turtle.unglow) # отпускание делает его прозрачным.
- turtle.ondrag(fun, btn=1, add=None)¶
- Параметры:
fun – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте
btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
add –
TrueилиFalse– еслиTrue, будет добавлена новая привязка, иначе она заменит предыдущую привязку
Привязывает fun к событиям перемещения мыши на этой черепашке. Если fun равно
None, существующие привязки удаляются.Примечание: Каждая последовательность событий перемещения мыши на черепашке предваряется событием щелчка мыши на этой черепашке.
>>> turtle.ondrag(turtle.goto)
После этого щелчок и перетаскивание черепашки будет перемещать её по экрану, создавая рисунки от руки (если перо опущено).
Специальные методы черепашки¶Special Turtle methods
- 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()
Составные фигуры¶Compound shapes
Для использования составных фигур черепашки, состоящих из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс Shape, как описано ниже:
Создаёт пустой объект Shape типа «compound».
Добавьте в этот объект необходимое количество компонентов с помощью метода
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")
Теперь добавьте Shape в список фигур экрана и используйте его:
>>> register_shape("myshape", s) >>> shape("myshape")
Примечание
Класс Shape используется внутри метода register_shape() разными способами. Разработчику приложения приходится иметь дело с классом Shape только при использовании составных фигур, как показано выше!
Методы TurtleScreen/Screen и соответствующие функции¶Methods of TurtleScreen/Screen and corresponding functions
Большинство примеров в этом разделе относятся к экземпляру TurtleScreen с именем screen.
Управление окном¶Window control
- turtle.bgcolor(*args)¶
- Параметры:
args – строка цвета, три числа в диапазоне от 0 до colormode или кортеж из трёх таких чисел.
Устанавливает или возвращает цвет фона экрана TurtleScreen.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
- turtle.bgpic(picname=None)¶
- Параметры:
picname – строка, имя gif-файла или
"nopic", илиNone
Устанавливает фоновое изображение или возвращает имя текущего фонового изображения. Если picname – имя файла, устанавливает соответствующее изображение как фон. Если picname равно
"nopic", удаляет фоновое изображение, если оно есть. Если picname равноNone, возвращает имя файла текущего фонового изображения.>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
- turtle.clear()
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
clearscreen. Глобальная функцияclear– другая, производная от метода Turtleclear.
- turtle.clearscreen()¶
Удаляет все рисунки и всех черепах с TurtleScreen. Сбрасывает теперь пустой TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязок событий и с включённой трассировкой.
- turtle.reset()
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
resetscreen. Глобальная функцияreset– это другая, производная от метода Turtlereset.
- turtle.resetscreen()¶
Сбрасывает всех черепах на экране в исходное состояние.
- turtle.screensize(canvwidth=None, canvheight=None, bg=None)¶
- Параметры:
canvwidth – положительное целое, новая ширина холста в пикселях
canvheight – положительное целое, новая высота холста в пикселях
bg – строка цвета или кортеж цвета, новый цвет фона
Если аргументы не переданы, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором рисуют черепахи. Не изменяет окно рисования. Для просмотра скрытых частей холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
например, для поиска случайно сбежавшей черепахи ;-)
- turtle.setworldcoordinates(llx, lly, urx, ury)¶
- Параметры:
llx – число, x-координата левого нижнего угла холста
lly – число, y-координата левого нижнего угла холста
urx – число, x-координата правого верхнего угла холста
ury – число, y-координата правого верхнего угла холста
Устанавливает пользовательскую систему координат и при необходимости переключается в режим «world». Это выполняет
screen.reset(). Если режим «world» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.ВНИМАНИЕ: в пользовательских системах координат углы могут отображаться искажёнными.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # правильный восьмиугольник
Управление анимацией¶Animation control
- turtle.delay(delay=None)¶
- Параметры:
delay – положительное целое
Устанавливает или возвращает задержку delay рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.
Необязательный аргумент:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
- turtle.tracer(n=None, delay=None)¶
- Параметры:
n – неотрицательное целое число
delay – неотрицательное целое число
Включает или выключает анимацию черепашки и устанавливает задержку для обновления рисунков. Если задан n, то реально выполняется только каждое n-е обычное обновление экрана. (Может использоваться для ускорения рисования сложной графики.) При вызове без аргументов возвращает текущее сохранённое значение n. Второй аргумент задаёт значение задержки (см.
delay()).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
- turtle.update()¶
Выполняет обновление TurtleScreen. Используется, когда tracer выключен.
См. также метод speed() RawTurtle/Turtle.
Использование событий экрана¶Using screen events
- turtle.listen(xdummy=None, ydummy=None)¶
Устанавливает фокус на TurtleScreen (для сбора событий клавиш). Фиктивные аргументы предусмотрены, чтобы можно было передать
listen()методу onclick.
- turtle.onkey(fun, key)¶
- turtle.onkeyrelease(fun, key)¶
- Параметры:
fun – функция без аргументов или
Nonekey – строка: клавиша (например, “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 – функция без аргументов или
Nonekey – строка: клавиша (например, “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 – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте
btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
add –
TrueилиFalse– еслиTrue, будет добавлена новая привязка, иначе она заменит предыдущую привязку
Привязывает fun к событиям щелчка мыши на этом экране. Если fun равен
None, существующие привязки удаляются.Пример для экземпляра TurtleScreen с именем
screenи экземпляра Turtle с именемturtle:>>> screen.onclick(turtle.goto) # Последующий щелчок по TurtleScreen заставит >>> # черепашку переместиться в точку щелчка. >>> screen.onclick(None) # снова удалить привязку события
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
onscreenclick. Глобальная функцияonclick– это другая, производная от метода Turtleonclick.
- turtle.ontimer(fun, t=0)¶
- Параметры:
fun – функция без аргументов
t – число >= 0
Устанавливает таймер, который вызывает fun через t миллисекунд.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### заставляет черепашку обходить вокруг >>> running = False
- turtle.mainloop()¶
- turtle.done()¶
Запускает цикл событий – вызывает функцию mainloop из Tkinter. Должна быть последней инструкцией в программе с черепашьей графикой. Должна не использоваться, если скрипт запускается из IDLE в режиме -n (без подпроцесса) – для интерактивного использования черепашьей графики.
>>> screen.mainloop()
Методы ввода¶Input methods
- 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)
Настройки и специальные методы¶Settings and special methods
- turtle.mode(mode=None)¶
- Параметры:
mode – одна из строк “standard”, “logo” или “world”
Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если режим не задан, возвращается текущий режим.
Режим “standard” совместим со старой
turtle. Режим “logo” совместим с большинством черепашьих графических средств Logo. Режим “world” использует заданные пользователем «мировые координаты». Внимание: в этом режиме углы выглядят искажёнными, еслиx/yкоэффициент единицы измерения не равен 1.Режим
Начальное направление черепахи
положительные углы
“standard”
вправо (восток)
против часовой стрелки
“logo”
вверх (север)
по часовой стрелке
>>> mode("logo") # сбрасывает направление черепашки на север >>> mode() 'logo'
- turtle.colormode(cmode=None)¶
- Параметры:
cmode – одно из значений 1.0 или 255
Возвращает цветовой режим или устанавливает его в 1.0 или 255. Впоследствии значения r, g, b цветовых троек должны находиться в диапазоне от 0 до *cmode*.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
- turtle.getcanvas()¶
Возвращает Canvas данного TurtleScreen. Полезно для тех, кто знает, что делать с Canvas из Tkinter.
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas object ...>
- turtle.getshapes()¶
Возвращает список названий всех доступных в данный момент форм черепашки.
>>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle']
- turtle.register_shape(name, shape=None)¶
- turtle.addshape(name, shape=None)¶
Эту функцию можно вызвать тремя различными способами:
name – это имя gif-файла, а shape – это
None: установите соответствующую форму изображения.>>> screen.register_shape("turtle.gif")
Примечание
Формы изображений не поворачиваются при повороте черепашки, поэтому они не отображают направление черепашки!
name – произвольная строка, а shape – кортеж пар координат: устанавливает соответствующую многоугольную форму.
>>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-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
Методы, специфичные для Screen, не наследуемые от TurtleScreen¶Methods specific to Screen, not inherited from 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) >>> # устанавливает окно размером 200x200 пикселей в верхнем левом углу экрана >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # устанавливает окно 75% на 50% экрана и центрирует его
- turtle.title(titlestring)¶
- Параметры:
titlestring – строка, отображаемая в заголовке окна черепашьей графики
Устанавливает заголовок окна черепашки равным titlestring.
>>> screen.title("Welcome to the turtle zoo!")
Открытые классы¶Public classes
- class turtle.RawTurtle(canvas)¶
- class turtle.RawPen(canvas)¶
- Параметры:
canvas –
tkinter.Canvas,ScrolledCanvasилиTurtleScreen
Создаёт черепашку. Объект черепашки обладает всеми методами, описанными выше как «методы Turtle/RawTurtle».
- class turtle.Turtle¶
Подкласс RawTurtle, имеет тот же интерфейс, но рисует на объекте
Screenпо умолчанию, который создаётся автоматически при первом обращении.
- class turtle.TurtleScreen(cv)¶
- Параметры:
cv –
tkinter.Canvas
Предоставляет экранно-ориентированные методы, такие как
bgcolor()и другие, описанные выше.
- class turtle.Screen¶
Подкласс TurtleScreen, дополненный четырьмя методами.
- class turtle.ScrolledCanvas(master)¶
- Параметры:
master – виджет Tkinter, в который помещается ScrolledCanvas; например, Tkinter-холст с добавленными полосами прокрутки
Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве поля для черепашек.
- class turtle.Shape(type_, data)¶
- Параметры:
type_ – одна из строк: «polygon», «image», «compound»
Структура данных для описания фигур. Пара
(type_, data)должна соответствовать следующей спецификации:type_
данные
«polygon»
кортеж многоугольника, т.е. кортеж пар координат
«image»
изображение (в таком виде используется только внутри!)
«compound»
None(составная фигура должна строиться с помощью методаaddcomponent())- addcomponent(poly, fill, outline, None)¶
- Параметры:
poly – многоугольник, т.е. кортеж пар чисел
fill – цвет, которым будет заполнен poly
outline – цвет контура многоугольника (если задан)
Пример:
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... добавьте больше компонентов, а затем используйте register_shape()
См. Составные фигуры.
- class turtle.Vec2D(x, y)¶
Двумерный векторный класс, используемый как вспомогательный класс для реализации graphics черепашки. Может быть полезен и для программ с графикой черепашки. Производный от tuple, так что вектор – это кортеж!
Предоставляет (для векторов a, b и числа k):
a + bсложение векторовa - bвычитание векторовa * bскалярное произведениеk * aиa * kумножение на скалярabs(a)абсолютное значение aa.rotate(angle)поворот
Пояснение¶Explanation
Объект черепашки рисует на объекте экрана, и в объектно-ориентированном интерфейсе черепашки есть ряд ключевых классов, которые можно использовать для их создания и связи друг с другом.
Экземпляр Turtle автоматически создаст экземпляр Screen,
если его ещё нет.
Turtle – подкласс RawTurtle, который не создаёт автоматически
поверхность для рисования – для него необходимо предоставить или создать холст. Холст может быть tkinter.Canvas, ScrolledCanvas
или TurtleScreen.
TurtleScreen – основная поверхность для рисования
черепашки. Screen – подкласс TurtleScreen и
включает несколько дополнительных методов для управления своим
внешним видом (включая размер и заголовок) и поведением. Конструктор TurtleScreen требует аргумент tkinter.Canvas или
ScrolledCanvas.
Функциональный интерфейс для графики черепашки использует различные методы
Turtle и TurtleScreen/Screen. За кулисами объект экрана
автоматически создаётся при каждом вызове функции, производной от метода Screen.
Аналогично, объект черепашки автоматически создаётся при каждом вызове любой из функций, производных от метода Turtle.
Для использования нескольких черепашек на одном экране необходимо использовать объектно-ориентированный интерфейс.
Справка и настройка¶Help and configuration
Как пользоваться справкой¶How to use help
Публичные методы классов Screen и Turtle подробно документированы через docstrings. Их можно использовать как онлайн-справку через средства помощи Python:
При использовании 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 на разные языки¶Translation of docstrings into different languages
Существует утилита для создания словаря, ключами которого являются имена методов, а значениями – 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 есть соответствующая запись, этот словарь будет считан на этапе импорта и заменит оригинальные англоязычные строки документации.
На момент написания этого текста есть словари строк документации на немецком и итальянском. (Запросы направляйте на glingl@aon.at.)
Как настроить Screen и Turtles¶How to configure Screen and Turtles
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить максимально возможную совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg, который будет прочитан на этапе импорта и изменит конфигурацию в соответствии с его настройками.
Встроенная конфигурация соответствует следующему turtle.cfg:
width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False
Краткое пояснение выбранных записей:
Первые четыре строки соответствуют аргументам метода
Screen.setup.Строки 5 и 6 соответствуют аргументам метода
Screen.screensize.shape может быть любой из встроенных форм, например: arrow, turtle и т.д. Для получения дополнительной информации попробуйте
help(shape).Если вы хотите не использовать цвет заливки (т.е. сделать черепашку прозрачной), вы должны написать
fillcolor = ""(но все непустые строки не должны содержать кавычки в cfg-файле).Если вы хотите отразить состояние черепашки, вы должны использовать
resizemode = auto.Если вы установите, например,
language = italian, то словарь строк документацииturtle_docstringdict_italian.pyбудет загружен во время импорта (если он присутствует в пути импорта, например, в той же директории, что иturtle).Записи exampleturtle и examplescreen задают имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.
using_IDLE: Установите это в
True, если вы регулярно работаете с IDLE и его переключателем-n(«нет подпроцесса»). Это предотвратитexitonclick()от входа в главный цикл.
Может быть файл turtle.cfg в каталоге, где хранится turtle, и дополнительный файл в текущем рабочем каталоге. Последний переопределит настройки первого.
Каталог Lib/turtledemo содержит файл turtle.cfg. Вы можете изучить его как пример и увидеть его эффекты при запуске демонстраций (желательно не из средства просмотра демонстраций).
turtledemo – Демонстрационные скрипты¶turtledemo – Demo scripts
Пакет turtledemo включает набор демонстрационных скриптов. Эти скрипты можно запускать и просматривать с помощью поставляемого средства просмотра демонстраций следующим образом:
python -m turtledemo
В качестве альтернативы вы можете запускать демонстрационные скрипты по отдельности. Например,
python -m turtledemo.bytedesign
Каталог пакета turtledemo содержит:
Средство просмотра демонстраций
__main__.py, которое можно использовать для просмотра исходного кода скриптов и одновременного их запуска.Несколько скриптов, демонстрирующих различные возможности модуля
turtle. Примеры доступны через меню Examples. Их также можно запускать отдельно.Файл
turtle.cfg, который служит примером того, как писать и использовать такие файлы.
Демонстрационные скрипты:
Имя |
Описание |
Возможности |
|---|---|---|
bytedesign |
сложный классический узор черепашьей графики |
|
chaos |
строит график динамики Ферхюльста, показывает, что компьютерные вычисления иногда могут давать результаты, противоречащие здравому смыслу |
мировые координаты |
clock |
аналоговые часы, показывающие время вашего компьютера |
черепахи как стрелки часов, ontimer |
colormixer |
эксперимент с r, g, b |
|
forest |
3 дерева обхода в ширину |
рандомизация |
fractalcurves |
Кривые Гильберта и Коха |
рекурсия |
lindenmayer |
этноматематика (индийские коламы) |
L-система |
minimal_hanoi |
Ханойские башни |
Прямоугольные черепахи как диски Ханоя (shape, shapesize) |
nim |
игра в классический ним с тремя кучками палочек против компьютера. |
черепашки как палочки нима, событийно-ориентированное управление (мышь, клавиатура) |
paint |
супер-минималистичная программа для рисования |
|
peace |
элементарный |
черепашка: внешний вид и анимация |
penrose |
непериодическое замощение воздушными змеями и дротиками |
|
planet_and_moon |
симуляция гравитационной системы |
составные фигуры,
|
rosette |
узор из статьи в Википедии о черепашьей графике |
|
round_dance |
танцующие черепашки, вращающиеся попарно в противоположных направлениях |
составные фигуры, clone shapesize, tilt, get_shapepoly, update |
sorting_animate |
визуальная демонстрация различных методов сортировки |
простое выравнивание, рандомизация |
дерево |
(графическое) дерево обхода в ширину (с использованием генераторов) |
|
two_canvases |
простой дизайн |
черепашки на двух холстах |
yinyang |
ещё один элементарный пример |
Удачи!
Изменения, начиная с Python 2.6¶Changes since 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¶Changes since Python 3.0
Методы
Turtle,shearfactor(),shapetransform()иget_shapepoly()были добавлены. Таким образом, полный спектр обычных линейных преобразований теперь доступен для трансформации форм черепах.tiltangle()был улучшен в функциональности: теперь его можно использовать для получения или установки угла наклона.settiltangle()устарел.Метод
Screenonkeypress()добавлен как дополнение кonkey(). Поскольку последний привязывает действия к событию отпускания клавиши, для него также был добавлен псевдонимonkeyrelease().Метод
Screen.mainloopдобавлен, поэтому больше нет необходимости использовать отдельную функциюmainloop()при работе с объектамиScreenиTurtle.Добавлены два метода ввода:
Screen.textinputиScreen.numinput. Они открывают диалоговые окна ввода и возвращают строки и числа соответственно.Два примера скриптов
tdemo_nim.pyиtdemo_round_dance.pyдобавлены в каталогLib/turtledemo.