turtle
— Графика черепахи¶
Исходный код: Lib/turtle.py
Вступление¶
Turtle graphics - это реализация the popular geometric drawing tools introduced in Logo, разработанная Уолли Ферзейгом, Сеймуром Папертом и Синтией Соломон в 1967 году.
В Python turtle graphics предоставляет представление физической «черепахи» (маленького робота с ручкой), который рисует на листе бумаги на полу.
Это эффективный и хорошо зарекомендовавший себя способ ознакомления учащихся с концепциями программирования и взаимодействия с программным обеспечением, поскольку он обеспечивает мгновенную и наглядную обратную связь. Он также обеспечивает удобный доступ к графическим выводам в целом.
Изначально Turtle drawing создавался как образовательный инструмент, предназначенный для использования преподавателями в классе. Для программистов, которым необходимо создать какой-либо графический результат, это может стать способом сделать это без дополнительных затрат на внедрение в свою работу более сложных или внешних библиотек.
Руководство¶
Новичкам стоит начать с этого. В этом уроке мы рассмотрим некоторые основы рисования черепах.
Запуск среды для черепах¶
В оболочке 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)
- which of course, are limited only by the imagination!
Давайте нарисуем звезду в верхней части этой страницы. Нам нужны красные линии, заполненные желтым:
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()
.)
Как…¶
В этом разделе рассматриваются некоторые типичные варианты использования turtle и подходы.
Приступайте к работе как можно быстрее¶
Одной из прелестей turtle graphics является мгновенная визуальная обратная связь, которую можно получить с помощью простых команд - это отличный способ познакомить детей с идеями программирования с минимальными затратами (не только детей, конечно).
Модуль turtle делает это возможным, предоставляя все свои базовые функциональные возможности в виде функций, доступных с помощью from turtle import *
. В turtle graphics tutorial описан этот подход.
Стоит отметить, что многие команды turtle также имеют еще более лаконичные эквиваленты, такие как fd()
для forward()
. Они особенно полезны при работе с учащимися, для которых набор текста не является навыком.
Для работы turtle graphics в вашей системе должен быть установлен
Tk interface package
. Имейте в виду, что это не всегда просто, поэтому проверьте это заранее, если вы планируете использовать turtle graphics с учеником.
Используйте пространство имен модуля turtle
¶
Использование from turtle import *
удобно, но имейте в виду, что при этом импортируется довольно большая коллекция объектов, и если вы делаете что-либо, кроме turtle graphics, вы рискуете столкнуться с конфликтом имен (это становится еще большей проблемой, если вы используете turtle graphics в скрипте, где другие модули может быть импортирован).
Решение состоит в том, чтобы использовать import turtle
- fd()
становится turtle.fd()
, width()
становится turtle.width()
и так далее. (Если набирать «turtle» снова и снова становится утомительно, используйте вместо этого, например, 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 также закроет окно turtle. Добавь:
t.mainloop()
до конца выполнения скрипта. Теперь скрипт будет ожидать завершения и не завершит работу до тех пор, пока он не будет завершен, например, путем закрытия графического окна turtle.
Используйте объектно-ориентированную графику turtle¶
Объектно-ориентированный подход к графике черепашек используется не только для ознакомительных целей или для того, чтобы как можно быстрее освоиться, но и как более привычный и эффективный. Например, это позволяет отображать на экране сразу несколько черепашек.
При таком подходе различные команды turtle являются методами объектов (в основном объектов 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; он создается автоматически вместе с turtle.
Экран черепахи может быть настроен по индивидуальному заказу, например:
t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")
Ссылка на графику черепахи¶
Примечание
В следующей документации приведен список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент self, который здесь опущен.
Черепашьи методы¶
- Движение черепахи
- Двигайтесь и рисуйте
- Расскажите о состоянии черепахи
- Настройка и измерение
- Управление пером
- Состояние рисования
- Управление цветом
- Заполнение
- Больше контроля над рисованием
- Состояние черепахи
- Видимость
- Внешность
- Использование событий
- Специальные методы работы с черепахами
Способы создания водолазного экрана/ширмы¶
- Управление окном
- Управление анимацией
- Использование экранных событий
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для скрининга
Методы RawTurtle/Turtle Turtle и соответствующие функции¶
Большинство примеров в этом разделе относятся к экземпляру Turtle с именем turtle
.
Движение черепахи¶
- turtle.forward(distance)¶
- turtle.fd(distance)¶
- Parameters:
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)¶
- Parameters:
distance – число
Переместите черепашку назад на расстояние, противоположное направлению движения черепашки. Не меняйте направление движения черепашки.
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
- turtle.right(angle)¶
- turtle.rt(angle)¶
- Parameters:
angle – число (целое или с плавающей точкой)
Поверните черепашку вправо на угол в единицах измерения. (По умолчанию единицами измерения являются градусы, но их можно задать с помощью функций
degrees()
иradians()
.) Ориентация угла зависит от режима черепашки, см.mode()
.>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
- turtle.left(angle)¶
- turtle.lt(angle)¶
- Parameters:
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)¶
- Parameters:
x – число или пара/вектор чисел
y – число или
None
Если y равно
None
, x должно быть парой координат илиVec2D
(например, как возвращаетpos()
).Переместите черепашку в абсолютное положение. Если перо опущено, проведите линию. Не меняйте ориентацию черепашки.
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00)
- turtle.setx(x)¶
- Parameters:
x – число (целое или с плавающей точкой)
Установите первую координату черепахи равной x, вторую координату оставьте без изменений.
>>> turtle.position() (0.00,240.00) >>> turtle.setx(10) >>> turtle.position() (10.00,240.00)
- turtle.sety(y)¶
- Parameters:
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)¶
- Parameters:
to_angle – число (целое или с плавающей точкой)
Установите ориентацию черепашки на to_angle. Вот несколько распространенных направлений в градусах:
стандартный режим
режим работы с логотипом
0 - восток
0 - север
90 - северный
90 - восток
180 - запад
180 - юг
270 - юг
270 - запад
>>> turtle.setheading(90) >>> turtle.heading() 90.0
- turtle.home()¶
Переместите черепашку в исходную точку - координаты (0,0) - и установите ее курс на начальную ориентацию (которая зависит от режима, см.
mode()
).>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
- turtle.circle(radius, extent=None, steps=None)¶
- Parameters:
radius – число
extent – число (или
None
)steps – целое число (или
None
)
Нарисуйте окружность с заданным радиусом. Центр находится в единицах радиуса слева от черепашки; протяженность - угол - определяет, какая часть окружности будет нарисована. Если протяженность не задана, нарисуйте всю окружность целиком. Если радиус не является полной окружностью, одна из конечных точек дуги является текущим положением пера. Если радиус положительный, нарисуйте дугу против часовой стрелки, в противном случае - по часовой стрелке. Наконец, направление движения черепашки изменяется на величину радиуса.
Поскольку окружность аппроксимируется вписанным правильным многоугольником, 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)¶
- Parameters:
size – целое число >= 1 (если задано)
color – цветовая строка или числовой цветовой кортеж
Нарисуйте круглую точку диаметром размер, используя цвет. Если размер не указан, используется максимальное значение размера пера+4 и 2*размер пера.
>>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() (100.00,-0.00) >>> turtle.heading() 0.0
- turtle.stamp()¶
Отпечатайте копию фигуры черепахи на холсте в текущем положении черепахи. Верните stamp_id для этого штампа, который можно использовать для его удаления, вызвав
clearstamp(stamp_id)
.>>> turtle.color("blue") >>> turtle.stamp() 11 >>> turtle.fd(50)
- turtle.clearstamp(stampid)¶
- Parameters:
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)¶
- Parameters:
n – целое число (или
None
)
Удалите все или первые/последние n марок черепахи. Если n равно
None
, удалите все марки, если n > 0, удалите первые n марок, в противном случае, если n < 0, удалите последние n марок.>>> for i in range(8): ... turtle.stamp(); turtle.fd(30) 13 14 15 16 17 18 19 20 >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
- turtle.undo()¶
Отмените (повторно) последнее действие черепашки. Количество доступных действий отмены определяется размером буфера отмены.
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
- turtle.speed(speed=None)¶
- Parameters:
speed – целое число в диапазоне 0..10 или строка скорости (см. ниже)
Установите для скорости черепахи целочисленное значение в диапазоне 0..10. Если аргумент не указан, верните текущую скорость.
Если введенное значение больше 10 или меньше 0,5, скорость устанавливается равной 0. Строки скорости преобразуются в значения скорости следующим образом:
«самый быстрый»: 0
«быстрый»: 10
«нормальный»: 6
«медленно»: 3
«самый медленный»: 1
Скорости от 1 до 10 обеспечивают все более быструю анимацию рисования линий и поворота черепахи.
Внимание: скорость = 0 означает, что анимация не выполняется. движение черепахи вперед / назад приводит к прыжку, а движение влево/вправо - к мгновенному повороту.
>>> 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)¶
- Parameters:
x – число или пара/вектор чисел или экземпляр turtle
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)¶
- Parameters:
x – число или пара/вектор чисел или экземпляр turtle
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)¶
- Parameters:
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.pensize(width=None)¶
- turtle.width(width=None)¶
- Parameters:
width – положительное число
Задайте толщину линии равной width или верните ее обратно. Если для параметра resizemode задано значение «auto», а форма черепахи представляет собой многоугольник, этот многоугольник рисуется с той же толщиной линии. Если аргумент не указан, возвращается текущий размер пера.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
- turtle.pen(pen=None, **pendict)¶
- Parameters:
pen – словарь, содержащий некоторые или все из перечисленных ниже ключей
pendict – одно или несколько ключевых слов-аргументов с приведенными ниже ключами в качестве ключевых слов
Верните или задайте атрибуты пера в «словаре пера» со следующими парами ключ/значение:
«показано»: Истина/Ложь
«отложенный»: Истинно/ложно
«pencolor»: цветовая строка или цветовой кортеж
«fillcolor»: цветовая строка или цветовой кортеж
«размер ручки»: положительное число
«скорость»: число в диапазоне 0..10
«режим изменения размера»: «автоматический», или «пользовательский», или «без изменения размера».
«stretchfactor»: (положительное число, положительная цифра)
«контур»: положительное число
«наклон»: число
Этот словарь может быть использован в качестве аргумента для последующего вызова
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()
Возвращает текущий pencolor в виде строки спецификации цвета или в виде кортежа (см. пример). Может использоваться в качестве входных данных для другого вызова color/pencolor/fillcolor.
pencolor(colorstring)
Установите для параметра Pencolor значение colorstring, которое является строкой спецификации цвета Тз, например
"red"
,"yellow"
, или"#33cc8c"
.pencolor((r, g, b))
Установите для pencolor цвет RGB, представленный набором из r, g и b. Каждое из значений r, g и b должно находиться в диапазоне 0..colormode, где colormode равно либо 1.0, либо 255 (см.
colormode()
).pencolor(r, g, b)
Установите для параметра Pencolor значение цвета 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, которое является строкой спецификации цвета технического задания, например
"red"
,"yellow"
, или"#33cc8c"
.fillcolor((r, g, b))
Установите для параметра fillcolor значение цвета RGB, представленного набором из r, g и b. Каждое из значений r, g и b должно находиться в диапазоне 0..colormode, где colormode равно либо 1.0, либо 255 (см.
colormode()
).fillcolor(r, g, b)
Установите для параметра fillcolor цвет 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'))¶
- Parameters:
arg – объект, который должен быть записан на водолазный экран
move – Истина/Ложь
align – одна из строк «левая», «центральная» или «правая»
font – тройка (fontname, fontsize, fonttype)
Напишите текст - строковое представление arg - в текущей позиции черепашки в соответствии с align («слева», «по центру» или «справа») и заданным шрифтом. Если значение переместить равно true, перо перемещается в правый нижний угол текста. По умолчанию значение переместить равно
False
.>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
Состояние черепахи¶
Видимость¶
- turtle.hideturtle()¶
- turtle.ht()¶
Сделайте черепашку невидимой. Это рекомендуется делать, когда вы работаете над каким-нибудь сложным рисунком, потому что, если спрятать черепашку, рисование заметно ускорится.
>>> turtle.hideturtle()
- turtle.isvisible()¶
Верните
True
, если черепаха показана,False
, если она скрыта.>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
Внешность¶
- turtle.shape(name=None)¶
- Parameters:
name – строка, которая является допустимым именем формы
Задайте для фигуры «черепаха» значение «фигура с заданным именем» или, если имя не указано, верните имя текущей фигуры. Фигура с именем должна существовать в словаре фигур экрана «Черепаха». Изначально существуют следующие многоугольные формы: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классика». Подробнее о том, как работать с фигурами, смотрите в разделе Экранный метод
register_shape()
.>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
- turtle.resizemode(rmode=None)¶
- Parameters:
rmode – одна из строк «auto», «user», «noresize»
Установите для параметра resizemode одно из значений: «auto», «user», «noresize». Если параметр rmode не задан, верните текущий режим изменения размера. Различные режимы изменения размера имеют следующие эффекты:
«автоматически»: изменяет внешний вид черепашки в соответствии со значением размера пера.
«пользователь»: адаптирует внешний вид черепахи в соответствии со значениями коэффициента растяжения и ширины контура (outline), которые задаются параметром
shapesize()
.«безразмерный»: внешний вид черепахи не меняется.
resizemode("user")
вызывается с помощьюshapesize()
при использовании с аргументами.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
- turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)¶
- turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)¶
- Parameters:
stretch_wid – положительное число
stretch_len – положительное число
outline – положительное число
Верните или задайте атрибуты пера x/y - коэффициенты растяжения и/или контур. Установите режим изменения размера на «пользовательский». Если и только если для параметра resizemode установлено значение «пользователь», черепаха будет отображаться растянутой в соответствии с ее параметрами растяжения: 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)¶
- Parameters:
shear – номер (необязательно)
Установите или верните текущее значение коэффициента сдвига. Измените форму черепахи в соответствии с заданным значением коэффициента сдвига, которое является тангенсом угла сдвига. Не меняйте направление движения черепахи. Если значение сдвига не задано: верните текущий коэффициент сдвига, т.е. тангенс угла сдвига, на который сдвигаются линии, параллельные курсу черепахи.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
- turtle.tilt(angle)¶
- Parameters:
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)¶
- Parameters:
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)¶
- Parameters:
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)¶
- Parameters:
t11 – номер (необязательно)
t12 – номер (необязательно)
t21 – номер (необязательно)
t12 – номер (необязательно)
Установите или верните текущую матрицу преобразования формы черепахи.
Если ни один из элементов матрицы не задан, верните матрицу преобразования в виде кортежа из 4 элементов. В противном случае задайте заданные элементы и преобразуйте форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 * t22 - t12 * t21 не должен быть равен нулю, иначе возникнет ошибка. Измените stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
- turtle.get_shapepoly()¶
Возвращает текущую форму полигона в виде набора пар координат. Это может быть использовано для определения новой фигуры или компонентов сложной фигуры.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
Использование событий¶
- turtle.onclick(fun, btn=1, add=None)
- Parameters:
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)¶
- Parameters:
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)¶
- Parameters:
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)¶
- Parameters:
size – целое число или
None
Установите или отключите буфер отмены. Если size является целым числом, то устанавливается пустой буфер отмены заданного размера. size задает максимальное количество действий turtle, которые могут быть отменены с помощью
undo()
метода/функции. Если размер равенNone
, то необуфер отключен.>>> turtle.setundobuffer(42)
- turtle.undobufferentries()¶
Возвращает количество записей в буфере отмены.
>>> while undobufferentries(): ... undo()
Сложные формы¶
Чтобы использовать сложные формы черепах, которые состоят из нескольких полигонов разного цвета, вы должны явно использовать вспомогательный класс 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")
Теперь добавьте фигуру в список фигур на экране и используйте ее:
>>> register_shape("myshape", s) >>> shape("myshape")
Примечание
Класс Shape
используется внутри метода register_shape()
различными способами. Прикладному программисту приходится иметь дело с классом Shape только при использовании составных фигур, как показано выше!
Методы создания водолазки/ширмы и соответствующие функции¶
Большинство примеров в этом разделе относятся к экземпляру TurtleScreen с именем screen
.
Управление окном¶
- turtle.bgcolor(*args)¶
- Parameters:
args – цветовая строка или три числа в диапазоне 0..colormode или набор из 3 таких чисел
Установите или верните цвет фона экрана с черепашками.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
- turtle.bgpic(picname=None)¶
- Parameters:
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()¶
Удалите все рисунки и всех черепашек с экрана черепашек. Верните пустой экран черепашек в исходное состояние: белый фон, без фонового изображения, без привязок к событиям и трассировки.
- turtle.reset()
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
resetscreen
. Глобальная функцияreset
является еще одним производным от метода Turtlereset
.
- turtle.resetscreen()¶
Верните всех черепах на экране в исходное состояние.
- turtle.screensize(canvwidth=None, canvheight=None, bg=None)¶
- Parameters:
canvwidth – положительное целое число, новая ширина холста в пикселях
canvheight – положительное целое число, новая высота холста в пикселях
bg – цветовая строка или цветовой кортеж, новый цвет фона
Если аргументы не указаны, верните значение current (ширина холста, высота холста). В противном случае измените размер холста, на котором рисуют черепашки. Не изменяйте окно рисования. Чтобы увидеть скрытые части холста, используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
например, для поиска ошибочно сбежавшей черепахи ;-)
- turtle.setworldcoordinates(llx, lly, urx, ury)¶
- Parameters:
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)¶
- Parameters:
delay – положительное целое число
Установите или верните значение задержки рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.
Необязательный аргумент:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
- turtle.tracer(n=None, delay=None)¶
- Parameters:
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()¶
Выполните обновление экрана с водолазкой. Будет использоваться, когда функция трассировки выключена.
Смотрите также метод RawTurtle/Turtle Turtle speed()
.
Использование экранных событий¶
- turtle.listen(xdummy=None, ydummy=None)¶
Установите фокус на Turtle Creek (чтобы собирать ключевые события). Вводятся фиктивные аргументы, чтобы иметь возможность передавать
listen()
методу onclick.
- turtle.onkey(fun, key)¶
- turtle.onkeyrelease(fun, key)¶
- Parameters:
fun – функция без аргументов или
None
key – строка: ключ (например, «a») или символ ключа (например, «пробел»)
Привязать fun к событию нажатия клавиши. Если значение fun равно
None
, привязки к событию удаляются. Примечание: чтобы иметь возможность регистрировать события нажатия клавиши, экран Turtle должен быть сфокусирован. (Смотрите методlisten()
.)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- turtle.onkeypress(fun, key=None)¶
- Parameters:
fun – функция без аргументов или
None
key – строка: ключ (например, «a») или символ ключа (например, «пробел»)
Привязать 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)¶
- Parameters:
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
является еще одним производным от метода Turtleonclick
.
- turtle.ontimer(fun, t=0)¶
- Parameters:
fun – функция без аргументов
t – число >= 0
Установите таймер, который вызывает «веселье» через t миллисекунд.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
- turtle.mainloop()¶
- turtle.done()¶
Запускает цикл обработки событий, вызывая функцию mainloop Tkinter. Должен быть последним оператором в графической программе turtle. Не должен использоваться, если скрипт запускается из IDLE в режиме -n (без подпроцесса) - для интерактивного использования графики turtle.
>>> screen.mainloop()
Методы ввода¶
- turtle.textinput(title, prompt)¶
- Parameters:
title – строка
prompt – строка
Откроется диалоговое окно для ввода строки. Заголовок параметра - это заголовок диалогового окна, подсказка - это текст, в основном описывающий, какую информацию вводить. Верните введенную строку. Если диалоговое окно отменено, верните
None
.>>> screen.textinput("NIM", "Name of first player:")
- turtle.numinput(title, prompt, default=None, minval=None, maxval=None)¶
- Parameters:
title – строка
prompt – строка
default – номер (необязательно)
minval – номер (необязательно)
maxval – номер (необязательно)
Откроется диалоговое окно для ввода числа. заголовок - это заголовок диалогового окна, подсказка - это текст, в основном описывающий, какую числовую информацию вводить. default: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимальное значение для ввода. Введенное число должно быть в диапазоне minval .. maxval, если они указаны. Если нет, выдается подсказка, и диалоговое окно остается открытым для исправления. Верните введенное число. Если диалоговое окно отменено, верните
None
.>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
Настройки и специальные методы¶
- turtle.mode(mode=None)¶
- Parameters:
mode – одна из строк «стандарт», «логотип» или «мир»
Установите режим черепашки («стандартный», «логотип» или «мир») и выполните сброс. Если режим не указан, возвращается текущий режим.
Режим «стандартный» совместим со старым
turtle
. Режим «логотип» совместим с большинством графических изображений черепашек с логотипами. Режим «мир» использует заданные пользователем «мировые координаты». Внимание: в этом режиме углы отображаются искаженными, еслиx/y
отношение единиц измерения не равно 1.Режим
Начальный курс черепахи
положительные углы
«стандартный»
справа (на восток)
против часовой стрелки
«логотип»
вверх (север)
по часовой стрелке
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
- turtle.colormode(cmode=None)¶
- Parameters:
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()¶
Верните холст этого экрана-черепашки. Полезно для тех, кто знает, что делать с холстом 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¶
- turtle.bye()¶
Закройте графическое окно черепашки.
- turtle.exitonclick()¶
Привязать метод
bye()
к щелчкам мыши по экрану.Если значение «using_IDLE» в словаре конфигурации равно
False
(значение по умолчанию), также введите mainloop. Примечание: Если используется параметр IDLE с параметром-n
(без подпроцесса), это значение должно быть установлено наTrue
вturtle.cfg
. В этом случае собственный mainloop IDLE активен также и для клиентского скрипта.
- turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])¶
Установите размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены с помощью файла
turtle.cfg
.- Parameters:
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)¶
- Parameters:
titlestring – строка, отображаемая в строке заголовка графического окна turtle
Установите для заголовка окна turtle значение titlestring.
>>> screen.title("Welcome to the turtle zoo!")
Публичные занятия¶
- class turtle.RawTurtle(canvas)¶
- class turtle.RawPen(canvas)¶
- Parameters:
canvas – a
tkinter.Canvas
, aScrolledCanvas
или aTurtleScreen
Создайте черепаху. У черепахи есть все методы, описанные выше, как «методы Turtle/RawTurtle».
- class turtle.Turtle¶
Подкласс Raw Turtle имеет тот же интерфейс, но использует объект по умолчанию
Screen
, который создается автоматически при первой необходимости.
- class turtle.TurtleScreen(cv)¶
- Parameters:
cv – a
tkinter.Canvas
Предоставляет методы, ориентированные на экран, такие как
bgcolor()
и т.д., которые описаны выше.
- class turtle.Screen¶
Подкласс черепашьего экрана с four methods added.
- class turtle.ScrolledCanvas(master)¶
- Parameters:
master – какой-нибудь виджет Tkinter, содержащий ScrolledCanvas, то есть Tkinter-холст с добавленными полосами прокрутки
Используется class Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве игровой площадки для черепах.
- class turtle.Shape(type_, data)¶
- Parameters:
type_ – одна из строк «полигон», «изображение», «соединение»
Формы, моделирующие структуру данных. Пара
(type_, data)
должна соответствовать этой спецификации:тип_
данные
«многоугольник»
многоугольник-кортеж, то есть набор пар координат
«образ»
изображение (в таком виде используется только внутри компании!)
«соединение»
None
(составная фигура должна быть построена с использованием методаaddcomponent()
)- addcomponent(poly, fill, outline=None)¶
- Parameters:
poly – многоугольник, то есть кортеж из пар чисел
fill – цветом, которым будет заполнен poly
outline – цвет для контура полигона (если указан)
Пример:
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... add more components and then use register_shape()
Смотрите Сложные формы.
- class turtle.Vec2D(x, y)¶
Двумерный класс vector, используемый в качестве вспомогательного класса для реализации turtle graphics. Может быть полезен и для графических программ turtle graphics. Производный от tuple, поэтому вектор - это кортеж!
Предоставляет (для векторов a, b, числа k):
a + b
сложение векторовa - b
векторное вычитаниеa * b
внутренний продуктk * a
иa * k
умножение на скалярноеabs(a)
абсолютное значениеa.rotate(angle)
вращение
Объяснение¶
Объект turtle отображает экранный объект, и в объектно-ориентированном интерфейсе turtle есть несколько ключевых классов, которые можно использовать для их создания и связи друг с другом.
Экземпляр Turtle
автоматически создаст экземпляр Screen
, если такового еще нет.
Turtle
является подклассом RawTurtle
, который не создает поверхность для рисования автоматически - для этого необходимо предоставить или создать холст. Canvas может быть символом tkinter.Canvas
, ScrolledCanvas
или TurtleScreen
.
TurtleScreen
является основной поверхностью для рисования черепахи. Screen
является подклассом TurtleScreen
и включает в себя some additional methods для управления TurtleScreen
ее внешним видом (включая размер и название) и поведением. <<<Конструктору 4>>> нужен tkinter.Canvas
или ScrolledCanvas
в качестве аргумента.
Функциональный интерфейс turtle graphics использует различные методы Turtle
и TurtleScreen
/Screen
. За кулисами объект screen автоматически создается всякий раз, когда вызывается функция, производная от метода Screen
. Аналогично, объект turtle автоматически создается всякий раз, когда вызывается любая из функций, производных от метода Turtle.
Чтобы использовать несколько черепашек на экране, необходимо использовать объектно-ориентированный интерфейс.
Справка и настройка¶
Как пользоваться справкой¶
Общедоступные методы классов Screen и Turtle подробно описаны в docstrings. Таким образом, их можно использовать в качестве онлайн-справки с помощью средств справки Python:
При использовании IDLE всплывающие подсказки отображают подписи и первые строки строк документации для введенных вызовов функций/методов.
При вызове
help()
методов или функций отображаются строки документации:>>> help(Screen.bgcolor) Help on method bgcolor in module turtle: bgcolor(self, *args) unbound turtle.Screen method Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. >>> screen.bgcolor("orange") >>> screen.bgcolor() "orange" >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() "#800080" >>> help(Turtle.penup) Help on method penup in module turtle: penup(self) unbound turtle.Turtle method Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument >>> turtle.penup()
Строки документации функций, которые являются производными от методов, имеют измененный вид:
>>> help(bgcolor) Help on function bgcolor in module turtle: bgcolor(*args) Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example:: >>> bgcolor("orange") >>> bgcolor() "orange" >>> bgcolor(0.5,0,0.5) >>> bgcolor() "#800080" >>> help(penup) Help on function penup in module turtle: penup() Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example: >>> penup()
Эти измененные строки документации создаются автоматически вместе с определениями функций, которые являются производными от методов во время импорта.
Перевод строк документации на разные языки¶
Существует утилита для создания словаря, ключами которого являются имена методов, а значениями - строки документации открытых методов классов Screen и Turtle.
- turtle.write_docstringdict(filename='turtle_docstringdict')¶
- Parameters:
filename – строка, используемая в качестве имени файла
Создайте и запишите docstring-словарь в скрипт Python с заданным именем файла. Эта функция должна вызываться явно (она не используется графическими классами turtle). Словарь docstring будет записан в скрипт Python
filename.py
. Он предназначен для того, чтобы служить шаблоном для перевода строк документации на разные языки.
Если вы (или ваши ученики) хотите использовать turtle
с онлайн-справкой на вашем родном языке, вам необходимо перевести строки документации и сохранить полученный файл, например, как turtle_docstringdict_german.py
.
Если в вашем файле turtle.cfg
есть соответствующая запись, этот словарь будет прочитан во время импорта и заменит исходные английские строки документации.
На момент написания этой статьи были доступны словари docstring на немецком и итальянском языках. (Запросы, пожалуйста, направляйте по адресу glingl@aon.at.)
Как настроить экран и черепашек¶
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить наилучшую возможную совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или которая лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg
, который будет прочитан во время импорта, и изменить конфигурацию в соответствии с ее настройками.
Встроенная конфигурация будет соответствовать следующей turtle.cfg
:
width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False
Краткое описание выбранных записей:
Первые четыре строки соответствуют аргументам метода
Screen.setup
.Строки 5 и 6 соответствуют аргументам метода
Screen.screensize
.форма может быть любой из встроенных форм, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте
help(shape)
.Если вы хотите не использовать цвет заливки (т.е. сделать черепашку прозрачной), вам нужно написать
fillcolor = ""
(но все непустые строки в файле cfg не должны содержать кавычек).Если вы хотите отразить состояние черепахи, вы должны использовать
resizemode = auto
.Если вы зададите, например,
language = italian
, строка документа dictturtle_docstringdict_italian.py
будет загружена во время импорта (если она присутствует в пути импорта, например, в том же каталоге, что иturtle
).Записи exampleturtle и examplescreen определяют имена этих объектов в том виде, в каком они встречаются в строках документации. Преобразование method-docstrings в function-docstrings приведет к удалению этих имен из строк документации.
using_IDLE: Установите значение
True
, если вы регулярно работаете с IDLE и его переключателем-n
(«нет подпроцесса»). Это предотвратит попаданиеexitonclick()
в основной цикл.
В каталоге, где хранится файл turtle.cfg
, может быть файл turtle
, а в текущем рабочем каталоге может быть дополнительный файл. Последний будет переопределять настройки первого.
Каталог Lib/turtledemo
содержит файл turtle.cfg
. Вы можете изучить его в качестве примера и увидеть его эффекты при запуске демонстраций (желательно не из программы просмотра демонстраций).
turtledemo
— Демонстрационные скрипты¶
Пакет turtledemo
включает в себя набор демонстрационных скриптов. Эти скрипты можно запустить и просмотреть с помощью прилагаемого демонстрационного средства просмотра следующим образом:
python -m turtledemo
В качестве альтернативы вы можете запустить демонстрационные скрипты по отдельности. Например,
python -m turtledemo.bytedesign
Каталог пакетов turtledemo
содержит:
Демонстрационный просмотрщик
__main__.py
, который можно использовать для просмотра исходного кода скриптов и одновременного их запуска.Несколько сценариев, демонстрирующих различные возможности модуля
turtle
. С примерами можно ознакомиться в меню Примеров. Их также можно запускать автономно.Файл
turtle.cfg
, который служит примером того, как писать и использовать такие файлы.
Демонстрационные скрипты - это:
Имя |
Описание |
Особенности |
---|---|---|
побочный дизайн |
сложный классический графический узор в виде черепахи |
|
хаос |
графики динамики Ферхюльста показывают, что компьютерные вычисления иногда могут давать результаты, противоречащие ожиданиям здравого смысла |
мировые координаты |
часы |
аналоговые часы, показывающие время вашего компьютера |
черепахи, как стрелки часов, точно по расписанию |
смеситель цветов |
поэкспериментируйте с r, g, b |
|
лес |
3 дерева высотой в ширину |
рандомизация |
фрактальные кривые |
Кривые Гильберта и Коха |
рекурсия |
линденмайер |
этноматематика (индийские коламы) |
L-система |
минимальный_ханои |
Башни Ханоя |
Прямоугольные черепахи в виде ханойских дисков (форма, размер формы) |
ним |
сыграйте в классическую игру nim с тремя кучками палочек против компьютера. |
черепашки в виде цифр, управляемые событиями (мышь, клавиатура) |
красить |
супер минималистичная программа для рисования |
|
мир |
начальный |
черепаха: внешний вид и анимация |
пенроуз |
непериодическая укладка плитки с воздушными змеями и дротиками |
|
планета и луна |
моделирование гравитационной системы |
сложные формы, |
розетка |
шаблон из статьи Википедии о графике черепах |
|
круглый танец |
танцующие черепашки, вращающиеся попарно в противоположных направлениях |
составные фигуры, размер клонируемой фигуры, наклон, get_shapepoly, обновление |
сортировка_живого |
наглядная демонстрация различных методов сортировки |
простое выравнивание, рандомизация |
дерево |
(графическое) дерево в ширину (с использованием генераторов) |
|
две решетки |
простой дизайн |
черепахи на двух полотнах |
иньянг |
еще один элементарный пример |
Развлекайся!
Изменения, произошедшие с версии 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
. Они открывают всплывающие диалоговые окна ввода и возвращают строки и числа соответственно.Два примера скриптов
tdemo_nim.py
иtdemo_round_dance.py
были добавлены в каталогLib/turtledemo
.