Черепаха — Графика черепахи
Исходный код: Lib/turtle.py
Введение
Графика черепахи — это реализация популярных геометрических инструментов для рисования, введенных в Logo, разработанных Уолли Фёрзейгом, Сеймуром Пейпертом и Синтией Соломон в 1967 году.
В Python графика черепахи предоставляет представление физической «черепахи» (маленького робота с пером), которая рисует на листе бумаги на полу.
Это эффективный и проверенный способ для учащихся познакомиться с концепциями программирования и взаимодействием с программным обеспечением, так как он предоставляет мгновенную визуальную обратную связь. Он также предоставляет удобный доступ к графическому выводу в целом.
Рисование черепахи изначально было создано как учебный инструмент, для использования учителями в классе. Для программиста, которому нужно создать какой-то графический вывод, это может быть способ сделать это без необходимости введения более сложных или внешних библиотек в свою работу.
Учебник
Новые пользователи должны начать здесь. В этом руководстве мы рассмотрим некоторые основы рисования черепахи.
Начало среды черепахи
В интерпретаторе Python импортируйте все объекты модуля turtle.
from turtle import *
Если у вас возникла ошибка No module named '_tkinter', вам необходимо установить Tk interface package на вашей системе.
Простое рисование
Передвиньте черепаху вперед на 100 шагов:
forward(100)
Вы должны увидеть (скорее всего, в новом окне на вашем экране) линию, нарисованную черепахой, направленную на восток. Измените направление черепахи, повернув ее на 120 градусов влево (против часовой стрелки):
left(120)
Давайте продолжим, нарисовав треугольник:
forward(100) left(120) forward(100)
Обратите внимание, как черепаха, представленная стрелкой, указывает в разные направления по мере того, как вы ее управляете.
Поэкспериментируйте с этими командами, а также с backward() и right().
Управление пером
Попробуйте изменить цвет — например, color('blue'), и ширину линии — например, width(3), а затем нарисуйте снова.
Вы также можете перемещать черепаху без рисования, подняв перо: up() перед перемещением. Чтобы снова начать рисовать, используйте down().
Положение черепахи
Верните вашу черепаху в исходную точку (полезно, если она исчезла за пределами экрана):
home()
Домашняя позиция находится в центре экрана черепахи. Если вам когда-либо понадобится узнать их, получите координаты черепахи x-y с:
pos()
Домашняя позиция находится в (0, 0).
И через некоторое время, вероятно, будет полезно очистить окно, чтобы мы могли начать сначала:
clearscreen()
Создание алгоритмических узоров
Используя циклы, можно создавать геометрические узоры:
for steps in range(100):
for c in ('blue', 'red', 'green'):
color(c)
forward(steps)
right(30)
- которые, конечно, ограничены только воображением!
Давайте нарисуем звездочку вверху этой страницы. Нам нужны красные линии, залитые желтым цветом:
color('red')
fillcolor('yellow')
Так же как up() и down() определяют, будут ли нарисованы линии, заливка может быть включена и выключена:
begin_fill()
Далее мы создадим цикл:
while True:
forward(200)
left(170)
if abs(pos()) < 1:
break
abs(pos()) < 1 — хороший способ узнать, когда черепаха вернулась в исходную точку.
И, наконец, завершите заливку:
end_fill()
(Обратите внимание, что заливка происходит только тогда, когда вы выполняете команду end_fill(). )
Как использовать…
Этот раздел охватывает некоторые типичные случаи использования и подходы для работы с черепахой.
Начните как можно быстрее
Одна из радостей графики черепахи — это мгновенная визуальная обратная связь, доступная с помощью простых команд — это отличный способ познакомить детей с концепциями программирования с минимальными затратами (не только детей, конечно).
Модуль turtle делает это возможным, предоставляя всю основную функциональность в виде функций, доступных с помощью from turtle import *. Учебник по графике черепахи описывает этот подход.
Стоит отметить, что многие команды черепахи имеют еще более краткие эквиваленты, например, fd() для forward(). Это особенно полезно при работе с учащимися, для которых написание текста не является навыком.
Для работы с графикой черепахи вам необходимо иметь Tk interface package на вашей системе. Будьте осторожны, это не всегда просто, поэтому проверьте это заранее, если вы планируете использовать графику черепахи с учащимися.
Использование пространства имен модуля turtle
Использование from turtle import * удобно, но имейте в виду, что оно импортирует довольно большой набор объектов, и если вы делаете что-то помимо графики черепахи, вы рискуете столкнуться с конфликтом имен (это становится еще более серьезной проблемой, если вы используете графику черепахи в скрипте, где могут быть импортированы другие модули).
Решение — использовать import turtle — fd() становится turtle.fd(), width() становится turtle.width() и так далее. (Если набирать «черепаха» снова и снова становится утомительно, используйте, например, import turtle
as t вместо этого.)
Использование графики черепахи в скрипте
Рекомендуется использовать пространство имен модуля turtle так, как описано выше, например:
import turtle as t
from random import random
for i in range(100):
steps = int(random() * 100)
angle = int(random() * 360)
t.right(angle)
t.fd(steps)
Однако требуется еще один шаг — как только скрипт завершится, Python также закроет окно черепахи. Добавьте:
t.mainloop()
в конец скрипта. Теперь скрипт будет ждать закрытия и не будет завершаться до тех пор, пока его не будет закрыто, например, закрытием окна графики черепахи.
Использование объектно-ориентированной графики черепахи
Помимо очень базовых вводных целей или для быстрого опробования, обычно и гораздо мощнее использовать объектно-ориентированный подход к графике черепахи. Например, это позволяет иметь несколько черепах на экране одновременно.
В этом подходе различные команды черепахи являются методами объектов (в основном объектов Turtle). Вы можете использовать объектно-ориентированный подход в интерпретаторе, но это будет более типично в скрипте Python.
Приведенный выше пример преобразуется в:
from turtle import Turtle
from random import random
t = Turtle()
for i in range(100):
steps = int(random() * 100)
angle = int(random() * 360)
t.right(angle)
t.fd(steps)
t.screen.mainloop()
Обратите внимание на последнюю строку. t.screen — это экземпляр Screen, на котором существует объект Turtle; он создается автоматически вместе с черепахой.
Экран черепахи можно настроить, например:
t.screen.title('Object-oriented turtle demo')
t.screen.bgcolor("orange")
Справочник по графике черепахи
Примечание
В приведенной ниже документации список аргументов функций указан. Методы, конечно, имеют дополнительный первый аргумент self, который здесь опущен.
Методы черепахи
- Движение черепахи
-
- Движение и рисование
- Определение состояния черепахи
- Настройка и измерение
- Управление пером
-
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительный контроль рисования
- Состояние черепахи
-
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
Методы TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для экрана
Методы RawTurtle/Черепаха и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру черепахи, называемому turtle.
Движение черепахи
-
turtle.forward(distance) -
turtle.fd(distance) -
- Параметры
-
distance – число (целое или вещественное)
Переместите черепаху вперед на указанное расстояние в направлении, в котором она движется.
>>> turtle.position() (0.00,0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00)
-
turtle.back(distance) -
turtle.bk(distance) -
turtle.backward(distance) -
- Параметры
-
distance – число
Переместите черепаху назад на расстояние, в противоположном направлении от текущего движения. Направление движения черепахи не изменяется.
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
-
turtle.right(angle) -
turtle.rt(angle) -
- Параметры
-
angle – число (целое или вещественное)
Поверните черепаху направо на angle единиц. (Единицы по умолчанию — градусы, но их можно изменить с помощью функций
degrees()иradians().) Направление поворота зависит от режима черепахи, см.mode().>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
-
turtle.left(angle) -
turtle.lt(angle) -
- Параметры
-
angle – число (целое или вещественное)
Поверните черепаху налево на angle единиц. (Единицы по умолчанию — градусы, но их можно изменить с помощью функций
degrees()иradians().) Направление поворота зависит от режима черепахи, см.mode().>>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0
-
turtle.goto(x, y=None) -
turtle.setpos(x, y=None) -
turtle.setposition(x, y=None) -
- Параметры
-
- x – число или пара/вектор чисел
-
y – число или
None
Если y
None, x должен быть парой координат илиVec2D(например, как возвращаетpos()).Переместите черепаху в абсолютную позицию. Если перо опустино, проведите линию. Направление черепахи не изменяется.
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00)
-
turtle.setx(x) -
- Параметры
-
x – число (целое или вещественное)
Установите первую координату черепахи на x, вторую координату оставьте без изменения.
>>> turtle.position() (0.00,240.00) >>> turtle.setx(10) >>> turtle.position() (10.00,240.00)
-
turtle.sety(y) -
- Параметры
-
y – число (целое или вещественное)
Установите вторую координату черепахи на y, первую координату оставьте без изменения.
>>> turtle.position() (0.00,40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00,-10.00)
-
turtle.setheading(to_angle) -
turtle.seth(to_angle) -
- Параметры
-
to_angle – число (целое или вещественное)
Установите направление черепахи на to_angle. Вот некоторые распространённые направления в градусах:
стандартный режим
режим Logo
0 - восток
0 - север
90 - север
90 - восток
180 - запад
180 - юг
270 - юг
270 - запад
>>> turtle.setheading(90) >>> turtle.heading() 90.0
-
turtle.home() -
Переместите черепаху в начало координат (0,0) и установите ее направление на исходное (которое зависит от режима, см.
mode()).>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
-
turtle.circle(radius, extent=None, steps=None) -
- Параметры
-
- radius – число
-
extent – число (или
None) -
steps – целое число (или
None)
Нарисуйте окружность с заданным radius. Центр находится на radius единиц влево от черепахи; extent — угол — определяет, какая часть окружности будет нарисована. Если extent не указан, рисуется вся окружность. Если extent не равен полной окружности, одна конечная точка дуги — текущая позиция пера. Рисуется дуга против часовой стрелки, если radius положительный, и по часовой стрелке, если отрицательный. Наконец, направление черепахи изменяется на величину extent.
Поскольку окружность аппроксимируется вписанным правильным многоугольником, steps определяет количество шагов, используемых для рисования. Если не указан, он рассчитывается автоматически. Может использоваться для рисования правильных многоугольников.
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # draw a semicircle >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
-
turtle.dot(size=None, *color) -
- Параметры
-
- size – целое число >= 1 (если указано)
- color – строка цвета или числовой кортеж цвета
Нарисовать круглое пятнышко диаметром size, используя цвет color. Если size не указано, используется максимальное значение из pensize+4 и 2*pensize.
>>> turtle.home() >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) >>> turtle.position() (100.00,-0.00) >>> turtle.heading() 0.0
-
turtle.stamp() -
Отпечатать копию фигуры черепахи на холсте в текущей позиции черепахи. Возвращает идентификатор отпечатка stamp_id, который можно использовать для его удаления, вызвав
clearstamp(stamp_id).>>> turtle.color("blue") >>> turtle.stamp() 11 >>> turtle.fd(50)
-
turtle.clearstamp(stampid) -
- Параметры
-
stampid – целое число, должно быть результатом предыдущего вызова
stamp()
Удалить отпечаток с заданным stampid.
>>> turtle.position() (150.00,-0.00) >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.position() (200.00,-0.00) >>> turtle.clearstamp(astamp) >>> turtle.position() (200.00,-0.00)
-
turtle.clearstamps(n=None) -
- Параметры
-
n – целое число (или
None)
Удалить все или первые/последние n отпечатков черепахи. Если n
None, удаляются все отпечатки, если n > 0, удаляются первые n отпечатков, а если n < 0, удаляются последние n отпечатков.>>> for i in range(8): ... turtle.stamp(); turtle.fd(30) 13 14 15 16 17 18 19 20 >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
-
turtle.undo() -
Отменить (повторять) последнее действие черепахи. Количество доступных отмен определяется размером буфера undo.
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
-
turtle.speed(speed=None) -
- Параметры
-
speed – целое число в диапазоне 0..10 или строка скорости (см. ниже)
Установить скорость черепахи на целое число в диапазоне 0..10. Если аргумент не указан, вернуть текущую скорость.
Если входное значение больше 10 или меньше 0,5, скорость устанавливается в 0. Строки скорости отображаются в значениях скорости следующим образом:
- “fastest”: 0
- “fast”: 10
- “normal”: 6
- “slow”: 3
- “slowest”: 1
Скорости от 1 до 10 обеспечивают все более быстрое выполнение анимации рисования линий и поворота черепахи.
Внимание: speed = 0 означает, что никакой анимации не происходит. forward/back делает черепаху «прыгает», и аналогично left/right заставляют черепаху повернуться мгновенно.
>>> turtle.speed() 3 >>> turtle.speed('normal') >>> turtle.speed() 6 >>> turtle.speed(9) >>> turtle.speed() 9
Состояние черепахи
-
turtle.position() -
turtle.pos() -
Возвращает текущие координаты черепахи (x, y) (как вектор
Vec2D).>>> turtle.pos() (440.00,-0.00)
-
turtle.towards(x, y=None) -
- Параметры
-
- x – число или пара/вектор чисел или экземпляр черепахи
-
y – число, если x — число, иначе
None
Возвращает угол между линией от позиции черепахи до заданной позиции (x, y), вектора или другой черепахи. Это зависит от начальной ориентации черепахи, которая зависит от режима — «стандартный»/«мировой» или «лого».
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
-
turtle.xcor() -
Возвращает координату x черепахи.
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
-
turtle.ycor() -
Возвращает координату y черепахи.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
-
turtle.heading() -
Возвращает текущее направление черепахи (значение зависит от режима черепахи, см.
mode()).>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
-
turtle.distance(x, y=None) -
- Параметры
-
- x – число или пара/вектор чисел или экземпляр черепахи
-
y – число, если x — число, иначе
None
Возвращает расстояние от черепахи до (x, y), заданного вектора или другой черепахи в единицах шагов черепахи.
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
Настройки измерения
-
turtle.degrees(fullcircle=360.0) -
- Параметры
-
fullcircle – число
Устанавливает единицы измерения углов, т.е. задаёт число «градусов» для полного круга. Значение по умолчанию — 360 градусов.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 Change angle measurement unit to grad (also known as gon, grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
-
turtle.radians() -
Устанавливает единицы измерения углов в радианах. Эквивалентно
degrees(2*math.pi).>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
Управление пером
Состояние рисования
-
turtle.pendown() -
turtle.pd() -
turtle.down() -
Опустить перо – рисовать при движении.
-
turtle.penup() -
turtle.pu() -
turtle.up() -
Поднять перо – не рисовать при движении.
-
turtle.pensize(width=None) -
turtle.width(width=None) -
- Параметры
-
width – положительное число
Установить толщину линии на width или вернуть её. Если режим изменения размера установлен в «авто» и форма черепахи – многоугольник, то этот многоугольник рисуется с той же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
-
turtle.pen(pen=None, **pendict) -
- Параметры
-
- pen – словарь с некоторыми или всеми перечисленными ниже ключами
- pendict – один или несколько ключевых аргументов с перечисленными ниже ключами в качестве ключевых слов
Возвратить или установить атрибуты пера в «словаре пера» со следующими парами ключ/значение:
- “shown”: True/False
- “pendown”: True/False
- “pencolor”: строка цвета или кортеж цвета
- “fillcolor”: строка цвета или кортеж цвета
- “pensize”: положительное число
- “speed”: число в диапазоне 0..10
- “resizemode”: «авто» или «пользователь» или «noresize»
- “stretchfactor”: (положительное число, положительное число)
- “outline”: положительное число
- “tilt”: число
Этот словарь может быть использован в качестве аргумента для последующего вызова
pen()для восстановления предыдущего состояния пера. Кроме того, один или несколько из этих атрибутов могут быть предоставлены как ключевые аргументы. Это может быть использовано для установки нескольких атрибутов пера в одном операторе.>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> sorted(turtle.pen().items()) [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shearfactor', 0.0), ('shown', True), ('speed', 9), ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)] >>> penstate=turtle.pen() >>> turtle.color("yellow", "") >>> turtle.penup() >>> sorted(turtle.pen().items())[:3] [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')] >>> turtle.pen(penstate, fillcolor="green") >>> sorted(turtle.pen().items())[:3] [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]
-
turtle.isdown() -
Возвращает
Trueесли перо опущено,Falseесли оно поднято.>>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True
Управление цветом
-
turtle.pencolor(*args) -
Возвращает или устанавливает цвет пера.
Разрешено четыре формата входных данных:
-
pencolor() -
Возвращает текущий цвет пера в виде строки спецификации цвета или кортежа (см. пример). Может быть использован в качестве входных данных для другого вызова color/pencolor/fillcolor.
-
pencolor(colorstring) -
Установить цвет пера на colorstring, которая является строкой спецификации цвета Tk, например
"red","yellow", или"#33cc8c". -
pencolor((r, g, b)) -
Установить цвет пера на RGB цвет, представленный кортежем из r, g, и b. Каждое из r, g, и b должно быть в диапазоне 0..colormode, где colormode равен либо 1.0, либо 255 (см.
colormode()). -
pencolor(r, g, b) -
Установить цвет пера на RGB цвет, представленный r, g, и b. Каждое из r, g, и b должно быть в диапазоне 0..colormode.
Если форма черепахи – многоугольник, контур этого многоугольника рисуется с недавно установленным цветом пера.
>>> colormode() 1.0 >>> turtle.pencolor() 'red' >>> turtle.pencolor("brown") >>> turtle.pencolor() 'brown' >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() (0.2, 0.8, 0.5490196078431373) >>> colormode(255) >>> turtle.pencolor() (51.0, 204.0, 140.0) >>> turtle.pencolor('#32c18f') >>> turtle.pencolor() (50.0, 193.0, 143.0) -
-
turtle.fillcolor(*args) -
Возвращает или устанавливает цвет заливки.
Разрешено четыре формата входных данных:
-
fillcolor() -
Возвращает текущий цвет заливки в виде строки спецификации цвета, возможно в формате кортежа (см. пример). Может быть использован в качестве входных данных для другого вызова color/pencolor/fillcolor.
-
fillcolor(colorstring) -
Установить цвет заливки на colorstring, которая является строкой спецификации цвета Tk, например
"red","yellow", или"#33cc8c". -
fillcolor((r, g, b)) -
Установить цвет заливки на RGB цвет, представленный кортежем из r, g, и b. Каждое из r, g, и b должно быть в диапазоне 0..colormode, где colormode равен либо 1.0, либо 255 (см.
colormode()). -
fillcolor(r, g, b) -
Установить цвет заливки на RGB цвет, представленный r, g, и b. Каждое из r, g, и b должно быть в диапазоне 0..colormode.
Если форма черепахи – многоугольник, внутренняя часть этого многоугольника рисуется с недавно установленным цветом заливки.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Integers, not floats >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0) -
-
turtle.color(*args) -
Возвращает или устанавливает цвет пера и цвет заливки.
Разрешено несколько форматов входных данных. Они используют от 0 до 3 аргументов следующим образом:
-
color() -
Возвращает текущий цвет пера и текущий цвет заливки как пару строк спецификации цвета или кортежей, как возвращает
pencolor()иfillcolor(). -
color(colorstring), color((r,g,b)), color(r,g,b) -
Входные данные, как и в
pencolor(), устанавливают оба, цвет заливки и цвет пера, на заданное значение. -
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) -
Эквивалентно
pencolor(colorstring1)иfillcolor(colorstring2)и аналогично, если используется другой формат входных данных.
Если форма черепахи – многоугольник, контур и внутренняя часть этого многоугольника рисуются с недавно установленными цветами.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0)) -
См. также: Метод экрана colormode().
Заливка
-
turtle.filling() -
Возвращает состояние заливки (
Trueесли заливка,Falseиначе).>>> turtle.begin_fill() >>> if turtle.filling(): ... turtle.pensize(5) ... else: ... turtle.pensize(3)
-
turtle.begin_fill() -
Вызывается непосредственно перед рисованием фигуры для заливки.
-
turtle.end_fill() -
Заполнить фигуру, нарисованную после последнего вызова
begin_fill().Заливка перекрывающихся областей для самопересекающихся многоугольников или нескольких фигур зависит от графики операционной системы, типа перекрытия и количества перекрытий. Например, звезда Черепахи выше может быть либо полностью жёлтой, либо иметь некоторые белые области.
>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
Дополнительное управление рисованием
-
turtle.reset() -
Удалить рисунки черепахи с экрана, переместить черепаху в центр и установить переменные по умолчанию.
>>> turtle.goto(0,-22) >>> turtle.left(100) >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
-
turtle.clear() -
Удалить рисунки черепахи с экрана. Не перемещать черепаху. Состояние и положение черепахи, а также рисунки других черепах не затрагиваются.
-
turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal')) -
- Параметры
-
- arg – объект, который будет записан на TurtleScreen
- move – True/False
- align – одна из строк «слева», «по центру» или «справа»
- font – тройка (название шрифта, размер шрифта, тип шрифта)
Вывести текст - строковое представление arg - в текущем положении черепахи в соответствии с align («слева», «по центру» или «справа») и с заданным шрифтом. Если move имеет значение true, перо перемещается в нижний правый угол текста. По умолчанию move равно
False.>>> turtle.write("Home = ", True, align="center") >>> turtle.write((0,0), True)
Состояние черепахи
Видимость
-
turtle.hideturtle() -
turtle.ht() -
Сделать черепаху невидимой. Это полезно, когда вы выполняете сложные рисунки, так как скрытие черепахи заметно ускоряет рисование.
>>> turtle.hideturtle()
-
turtle.showturtle() -
turtle.st() -
Сделать черепаху видимой.
>>> turtle.showturtle()
-
turtle.isvisible() -
Возвращает
Trueесли черепаха показана,Falseесли она скрыта.>>> turtle.hideturtle() >>> turtle.isvisible() False >>> turtle.showturtle() >>> turtle.isvisible() True
Внешний вид
-
turtle.shape(name=None) -
- Параметры
-
name – строка, являющаяся допустимым именем формы
Установить форму черепахи на форму с заданным именем name или, если имя не указано, вернуть имя текущей формы. Форма с именем name должна существовать в словаре форм TurtleScreen. Изначально существуют следующие полигональные формы: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классическая». Чтобы узнать, как работать с формами, см. метод экрана
register_shape().>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
-
turtle.resizemode(rmode=None) -
- Параметры
-
rmode – одна из строк «авто», «пользователь», «нет изменения размеров»
Установить режим изменения размера на одно из значений: «авто», «пользователь», «нет изменения размеров». Если rmode не задан, вернуть текущий режим изменения размера. Различные режимы изменения размера имеют следующие эффекты:
- «авто»: адаптирует внешний вид черепахи в соответствии со значением pensize.
- «пользователь»: адаптирует внешний вид черепахи в соответствии со значениями stretchfactor и outlinewidth (контур), которые устанавливаются с помощью
shapesize(). - «нет изменения размеров»: адаптация внешнего вида черепахи не происходит.
resizemode("user")вызываетсяshapesize()при использовании с аргументами.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
-
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None) -
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None) -
- Параметры
-
- stretch_wid – положительное число
- stretch_len – положительное число
- outline – положительное число
Возврат или установка атрибутов пера x/y-stretchfactors и/или контура. Установить режим изменения размера на «пользователь». Если и только если режим изменения размера установлен на «пользователь», черепаха будет отображаться с растяжением в соответствии со своими коэффициентами растяжения: stretch_wid — коэффициент растяжения перпендикулярно ориентации, stretch_len — коэффициент растяжения в направлении ориентации, outline определяет ширину контура формы.
>>> turtle.shapesize() (1.0, 1.0, 1) >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize() (5, 5, 12) >>> turtle.shapesize(outline=8) >>> turtle.shapesize() (5, 5, 8)
-
turtle.shearfactor(shear=None) -
- Параметры
-
shear – число (необязательно)
Установить или вернуть текущий коэффициент сдвига. Сдвинуть форму черепахи в соответствии с заданным коэффициентом сдвига shear, который является тангенсом угла сдвига. Не изменять направление движения черепахи. Если shear не задан: вернуть текущий коэффициент сдвига, т. е. тангенс угла сдвига, при котором линии, параллельные направлению движения черепахи, смещаются.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
-
turtle.tilt(angle) -
- Параметры
-
angle – число
Повернуть форму черепахи на angle градусов от текущего угла наклона, но не изменять направление движения черепахи.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50)
-
turtle.settiltangle(angle) -
- Параметры
-
angle – число
Повернуть форму черепахи, чтобы она указывала в направлении, указанном angle, независимо от ее текущего угла наклона. Не изменять направление движения черепахи.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> turtle.fd(50)Устаревшее с версии 3.1.
-
turtle.tiltangle(angle=None) -
- Параметры
-
angle – число (необязательно)
Установить или вернуть текущий угол наклона. Если angle задан, повернуть форму черепахи, чтобы она указывала в направлении, указанном angle, независимо от ее текущего угла наклона. Не изменять направление движения черепахи. Если angle не задан: вернуть текущий угол наклона, т. е. угол между ориентацией формы черепахи и направлением движения черепахи.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
-
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None) -
- Параметры
-
- t11 – число (необязательно)
- t12 – число (необязательно)
- t21 – число (необязательно)
- t12 – число (необязательно)
Установить или вернуть текущую матрицу преобразования формы черепахи.
Если ни один из элементов матрицы не задан, вернуть матрицу преобразования в виде кортежа из 4 элементов. В противном случае установить заданные элементы и преобразовать форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 * t22 - t12 * t21 не должен быть равен нулю, в противном случае возникает ошибка. Изменить stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
-
turtle.get_shapepoly() -
Возвращает текущий полигон формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
Использование событий
- turtle.onclick(fun, btn=1, add=None)
-
- Параметры
-
- fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
- btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
-
add –
TrueилиFalse– еслиTrue, новая привязка будет добавлена, в противном случае она заменит предыдущую привязку
Привязать fun к событиям щелчка мыши на этой черепахе. Если fun —
None, существующие привязки удаляются. Пример для анонимной черепахи, т. е. процедурным способом:>>> def turn(x, y): ... left(180) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed
-
turtle.onrelease(fun, btn=1, add=None) -
- Параметры
-
- fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
- btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
-
add –
TrueилиFalse– еслиTrue, новая привязка будет добавлена, в противном случае она заменит предыдущую привязку
Привязать fun к событиям отпускания кнопки мыши на этой черепахе. Если fun —
None, существующие привязки удаляются.>>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> turtle = MyTurtle() >>> turtle.onclick(turtle.glow) # clicking on turtle turns fillcolor red, >>> turtle.onrelease(turtle.unglow) # releasing turns it to transparent.
-
turtle.ondrag(fun, btn=1, add=None) -
- Параметры
-
- fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
- btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
-
add –
TrueилиFalse– еслиTrue, новая привязка будет добавлена, в противном случае она заменит предыдущую привязку
Привязать fun к событиям перемещения мыши на этой черепахе. Если fun —
None, существующие привязки удаляются.Примечание: каждой последовательности событий перемещения мыши на черепахе предшествует событие щелчка мыши на этой черепахе.
>>> turtle.ondrag(turtle.goto)
Впоследствии щелчок и перетаскивание черепахи перемещает ее по экрану, тем самым создавая рисунки (если перо опущено).
Специальные методы черепахи
-
turtle.begin_poly() -
Начать запись вершин многоугольника. Текущее положение черепахи — первая вершина многоугольника.
-
turtle.end_poly() -
Закончить запись вершин многоугольника. Текущее положение черепахи — последняя вершина многоугольника. Эта вершина будет соединена с первой.
-
turtle.get_poly() -
Возвращает последний записанный многоугольник.
>>> turtle.home() >>> turtle.begin_poly() >>> turtle.fd(100) >>> turtle.left(20) >>> turtle.fd(30) >>> turtle.left(60) >>> turtle.fd(50) >>> turtle.end_poly() >>> p = turtle.get_poly() >>> register_shape("myFavouriteShape", p)
-
turtle.clone() -
Создаёт и возвращает клон черепахи с теми же позицией, направлением и свойствами черепахи.
>>> mick = Turtle() >>> joe = mick.clone()
-
turtle.getturtle() -
turtle.getpen() -
Возвращает сам объект Turtle. Единственное разумное применение: как функция для возвращения «анонимной черепахи»:
>>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x...>
-
turtle.getscreen() -
Возвращает объект
TurtleScreen, на котором черепаха рисует. После этого можно вызывать методы TurtleScreen для этого объекта.>>> ts = turtle.getscreen() >>> ts <turtle._Screen object at 0x...> >>> ts.bgcolor("pink")
-
turtle.setundobuffer(size) -
- Параметры
-
size – целое число или
None
Устанавливает или отключает буфер отмены. Если size — целое число, устанавливается пустой буфер отмены заданного размера. size задаёт максимальное число действий черепахи, которые можно отменить методом/функцией
undo(). Если size —None, буфер отмены отключается.>>> turtle.setundobuffer(42)
-
turtle.undobufferentries() -
Возвращает количество элементов в буфере отмены.
>>> while undobufferentries(): ... undo()
Составные фигуры
Чтобы использовать составные фигуры черепахи, состоящие из нескольких многоугольников разных цветов, необходимо явно использовать вспомогательный класс Shape, как описано ниже:
- Создайте пустой объект 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 и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру TurtleScreen, называемому screen.
Управление окном
-
turtle.bgcolor(*args) -
- Параметры
-
args – строка цвета или три числа в диапазоне 0..colormode или 3-кортеж таких чисел
Устанавливает или возвращает цвет фона TurtleScreen.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128.0, 0.0, 128.0)
-
turtle.bgpic(picname=None) -
- Параметры
-
picname – строка, имя файла gif или
"nopic", илиNone
Устанавливает фоновое изображение или возвращает имя текущего фонового изображения. Если picname – имя файла, устанавливается соответствующее изображение в качестве фона. Если picname –
"nopic", удаляется фоновое изображение, если оно есть. Если picname –None, возвращается имя файла текущего фонового изображения.>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
- turtle.clear()
-
Примечание
Этот метод TurtleScreen доступен в качестве глобальной функции только под именем
clearscreen. Глобальная функцияclearотличается от метода черепахиclear.
-
turtle.clearscreen() -
Удаляет все рисунки и всех черепах из TurtleScreen. Сбрасывает теперь пустой TurtleScreen в начальное состояние: белый фон, без фонового изображения, без привязок к событиям и с включенным слежением.
- turtle.reset()
-
Примечание
Этот метод TurtleScreen доступен в качестве глобальной функции только под именем
resetscreen. Глобальная функцияresetотличается от метода черепахиreset.
-
turtle.resetscreen() -
Сбрасывает всех черепах на экране в их начальное состояние.
-
turtle.screensize(canvwidth=None, canvheight=None, bg=None) -
- Параметры
-
- canvwidth – положительное целое число, новая ширина холста в пикселях
- canvheight – положительное целое число, новая высота холста в пикселях
- bg – строка цвета или кортеж цвета, новый цвет фона
Если аргументы не указаны, возвращает текущие значения (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором черепахи рисуют. Не изменяет окно рисования. Для просмотра скрытых частей холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые были вне холста до этого.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
например, для поиска ошибочно вылетевшей черепахи ;-)
-
turtle.setworldcoordinates(llx, lly, urx, ury) -
- Параметры
-
- llx – число, координата x левого нижнего угла холста
- lly – число, координата y левого нижнего угла холста
- urx – число, координата x правого верхнего угла холста
- ury – число, координата y правого верхнего угла холста
Настройка пользовательской системы координат и переход в режим «мир», если необходимо. Это выполняет
screen.reset(). Если режим «мир» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.ВНИМАНИЕ: в пользовательских системах координат углы могут выглядеть искаженными.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
Управление анимацией
-
turtle.delay(delay=None) -
- Параметры
-
delay – положительное целое число
Устанавливает или возвращает задержку рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.
Необязательный аргумент:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
-
turtle.tracer(n=None, delay=None) -
- Параметры
-
- n – неотрицательное целое число
- delay – неотрицательное целое число
Включает/выключает анимацию черепахи и устанавливает задержку для обновления рисунков. Если задано n, выполняется только каждое n-е обычное обновление экрана. (Может использоваться для ускорения рисования сложных графиков.) При вызове без аргументов возвращает текущее сохраненное значение n. Второй аргумент устанавливает значение задержки (см.
delay()).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
-
turtle.update() -
Выполняет обновление TurtleScreen. Используется, когда tracer выключен.
См. также метод RawTurtle/Turtle speed().
Использование событий экрана
-
turtle.listen(xdummy=None, ydummy=None) -
Устанавливает фокус на TurtleScreen (для сбора событий нажатия клавиш). Аргументы-заполнители предоставляются для возможности передачи
listen()методу onclick.
-
turtle.onkey(fun, key) -
turtle.onkeyrelease(fun, key) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: клавиша (например, «a») или символ клавиши (например, «пробел»)
-
fun – функция без аргументов или
Связывает fun с событием отпускания клавиши. Если fun –
None, привязки событий удаляются. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. методlisten().)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
-
turtle.onkeypress(fun, key=None) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: клавиша (например, «a») или символ клавиши (например, «пробел»)
-
fun – функция без аргументов или
Связывает fun с событием нажатия клавиши, если 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) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
Примечание
Этот метод TurtleScreen доступен в качестве глобальной функции только под именем
onscreenclick. Глобальная функцияonclickотличается от метода черепахиonclick.
-
turtle.ontimer(fun, t=0) -
- Параметры
-
- fun – функция без аргументов
- t – число ≥ 0
Устанавливает таймер, который вызывает fun через t миллисекунд.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
-
turtle.mainloop() -
turtle.done() -
Запускает цикл обработки событий – вызывая функцию Tkinter’s mainloop. Должен быть последней строкой в программе с графикой черепах. Не должен использоваться, если скрипт запускается изнутри IDLE в режиме -n (без подпроцесса) – для интерактивного использования графики черепах.
>>> screen.mainloop()
Методы ввода
-
turtle.textinput(title, prompt) -
- Параметры
-
- title – строка
- prompt – строка
Выводит диалоговое окно для ввода строки. Параметр title — заголовок диалогового окна, prompt — текст, описывающий, какую информацию необходимо ввести. Возвращает введённую строку. Если диалог был отменён, возвращает
None.>>> screen.textinput("NIM", "Name of first player:")
-
turtle.numinput(title, prompt, default=None, minval=None, maxval=None) -
- Параметры
-
- title – строка
- prompt – строка
- default – число (необязательно)
- minval – число (необязательно)
- maxval – число (необязательно)
Выводит диалоговое окно для ввода числа. title — заголовок диалогового окна, prompt — текст, описывающий, какое числовое значение необходимо ввести. default: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимальное значение для ввода. Введённое число должно находиться в диапазоне minval .. maxval, если эти значения заданы. В противном случае выдается подсказка, и диалоговое окно остается открытым для исправления. Возвращает введённое число. Если диалог был отменён, возвращает
None.>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
Настройки и специальные методы
-
turtle.mode(mode=None) -
- Параметры
-
mode – одна из строк “standard”, “logo” или “world”
Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если mode не указан, возвращается текущий режим.
Режим “standard” совместим со старыми
turtle. Режим “logo” совместим с большинством графических сред Logo. Режим “world” использует определённые пользователем «мировые координаты». Внимание: в этом режиме углы отображаются искажённо, еслиx/yunit-ratio не равно 1.Режим
Начальное направление черепахи
Положительные углы
“standard”
направо (восток)
против часовой стрелки
“logo”
вверх (север)
по часовой стрелке
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
-
turtle.colormode(cmode=None) -
- Параметры
-
cmode – одно из значений 1.0 или 255
Возвращает режим цвета или устанавливает его в 1.0 или 255. В дальнейшем значения r, g, b цветовых троек должны быть в диапазоне 0..*cmode*.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
-
turtle.getcanvas() -
Возвращает холст (Canvas) этой TurtleScreen. Полезно для специалистов, знающих, что делать с холстом Tkinter.
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas object ...>
-
turtle.getshapes() -
Возвращает список имён всех доступных в данный момент форм черепахи.
>>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle']
-
turtle.register_shape(name, shape=None) -
turtle.addshape(name, shape=None) -
Существует три способа вызова этой функции:
-
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
Методы, специфичные для экрана, не унаследованные от TurtleScreen
-
turtle.bye() -
Закрывает окно графики черепахи.
-
turtle.exitonclick() -
Привязывает метод
bye()к щелчкам мыши на экране.Если значение «using_IDLE» в словаре настроек равно
False(значение по умолчанию), также запускает цикл обработки событий. Примечание: Если используется IDLE с опцией-n(без подпроцесса), это значение должно быть установлено вTrueвturtle.cfg. В этом случае собственный цикл обработки событий IDLE активен также для клиентского скрипта.
-
turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom']) -
Устанавливает размер и положение главного окна. Значения по умолчанию аргументов хранятся в словаре настроек и могут быть изменены через файл
turtle.cfg.- Параметры
-
- width – если целое число, размер в пикселях, если число с плавающей точкой, дробь от экрана; значение по умолчанию — 50% экрана
- height – если целое число, высота в пикселях, если число с плавающей точкой, дробь от экрана; значение по умолчанию — 75% экрана
-
startx – если положительное число, начальная позиция в пикселях от левого края экрана, если отрицательное — от правого края, если
None, центрирует окно по горизонтали -
starty – если положительное число, начальная позиция в пикселях от верхнего края экрана, если отрицательное — от нижнего края, если
None, центрирует окно по вертикали
>>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # sets window to 75% of screen by 50% of screen and centers
-
turtle.title(titlestring) -
- Параметры
-
titlestring – строка, отображаемая в строке заголовка окна графики черепахи
Устанавливает заголовок окна черепахи на titlestring.
>>> screen.title("Welcome to the turtle zoo!")
Открытые классы
-
class turtle.RawTurtle(canvas) -
class turtle.RawPen(canvas) -
- Параметры
-
canvas – a
tkinter.Canvas, aScrolledCanvasилиTurtleScreen
Создает черепаху. У черепахи есть все методы, описанные выше как «методы Turtle/RawTurtle».
-
class turtle.Turtle -
Подкласс RawTurtle, имеет тот же интерфейс, но рисует на стандартном объекте
Screen, созданном автоматически при первой необходимости.
-
class turtle.TurtleScreen(cv) -
- Параметры
-
cv – a
tkinter.Canvas
Предоставляет методы, ориентированные на экран, такие как
bgcolor()и т. д., которые описаны выше.
-
class turtle.Screen -
Подкласс TurtleScreen, с добавленными четырьмя методами.
-
class turtle.ScrolledCanvas(master) -
- Параметры
-
master – какой-то виджет Tkinter для размещения ScrolledCanvas, то есть Tkinter-холст со добавленными полосами прокрутки
Используется классом Screen, который таким образом автоматически предоставляет ScrolledCanvas в качестве игрового поля для черепах.
-
class turtle.Shape(type_, data) -
- Параметры
-
type_ – одно из строк “polygon”, “image”, “compound”
Структура данных, моделирующая формы. Пара
(type_, data)должна следовать этому описанию:type_
data
“polygon”
многоугольник-кортеж, т.е. кортеж пар координат
“image”
изображение (в этой форме используется только внутренне!)
“compound”
None(сложная форма должна быть построена с помощью методаaddcomponent())-
addcomponent(poly, fill, outline=None) -
- Параметры
-
- poly – многоугольник, т.е. кортеж пар чисел
- fill – цвет, которым будет заливаться poly
- outline – цвет обводки poly (если задан)
Пример:
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... add more components and then use register_shape()См. Сложные фигуры.
-
class turtle.Vec2D(x, y) -
Класс двумерного вектора, используемый как вспомогательный класс для реализации графики черепах. Может быть полезен и для программ с графикой черепах. Происходит от кортежа, поэтому вектор — это кортеж!
Предоставляет (для векторов a, b, числа k):
-
a + bсложение векторов -
a - bвычитание векторов -
a * bскалярное произведение -
k * aиa * kумножение на скаляр -
abs(a)абсолютное значение a -
a.rotate(angle)поворот
-
Описание
Объект черепахи рисует на объекте экрана, и есть ряд ключевых классов в объектно-ориентированном интерфейсе черепахи, которые можно использовать для их создания и взаимосвязи.
Экземпляр Turtle автоматически создаст экземпляр Screen, если он ещё не существует.
Turtle является подклассом RawTurtle, который не автоматически создаёт область рисования — для него потребуется холст canvas, который нужно будет предоставить или создать. Холст может быть tkinter.Canvas, ScrolledCanvas или TurtleScreen.
TurtleScreen является основной областью рисования для черепахи. Screen — это подкласс TurtleScreen, и он включает некоторые дополнительные методы для управления его внешним видом (включая размер и заголовок) и поведением. Конструктор TurtleScreen требует tkinter.Canvas или ScrolledCanvas в качестве аргумента.
Функциональный интерфейс для графики черепах использует различные методы Turtle и TurtleScreen/Screen. За кулисами объект экрана автоматически создаётся всякий раз, когда вызывается функция, производная от метода Screen. Аналогично, объект черепахи автоматически создаётся всякий раз, когда вызывается любая функция, производная от метода Turtle.
Для использования нескольких черепах на экране необходимо использовать объектно-ориентированный интерфейс.
Справка и настройка
Как использовать справку
Общедоступные методы классов 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 на другие языки
Существует утилита для создания словаря, ключами которого являются имена методов, а значениями — docstrings общедоступных методов классов Screen и Turtle.
-
turtle.write_docstringdict(filename='turtle_docstringdict') -
- Параметры
-
filename – строка, используемая в качестве имени файла
Создаёт и записывает словарь docstring в скрипт Python с заданным именем файла. Эту функцию необходимо вызывать явно (она не используется классами графики черепахи). Словарь docstring будет записан в скрипт Python
filename.py. Он предназначен в качестве шаблона для перевода docstrings на разные языки.
Если вы (или ваши студенты) хотите использовать turtle с онлайн-справкой на родном языке, вам нужно перевести docstrings и сохранить получившийся файл, например, как turtle_docstringdict_german.py.
Если в вашем файле turtle.cfg есть соответствующая запись, этот словарь будет прочитан при импорте и заменит оригинальные английские docstrings.
На момент написания этой документации существуют словари docstrings на немецком и итальянском языках. (Пожалуйста, направляйте свои запросы на glingl@aon.at.)
Настройка экрана и черепах
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля черепахи, чтобы сохранить максимальную совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или лучше подходит для ваших нужд, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg, который будет прочитан при импорте и изменит настройки в соответствии с его параметрами.
Встроенная конфигурация соответствовала бы следующему turtle.cfg:
width = 0.5 height = 0.75 leftright = None topbottom = None canvwidth = 400 canvheight = 300 mode = standard colormode = 1.0 delay = 10 undobuffersize = 1000 shape = classic pencolor = black fillcolor = black resizemode = noresize visible = True language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = False
Краткое объяснение выбранных записей:
- Первые четыре строки соответствуют аргументам метода
Screen.setup. - Строки 5 и 6 соответствуют аргументам метода
Screen.screensize. -
shape может быть любой из встроенных форм, например: стрелка, черепаха и т. д. Для получения дополнительной информации попробуйте
help(shape). - Если вы хотите использовать без цвета заливки (т. е. сделать черепаху прозрачной), необходимо написать
fillcolor = ""(но все непустые строки не должны содержать кавычек в файле cfg). - Если вы хотите отобразить состояние черепахи, необходимо использовать
resizemode = auto. - Если вы установите, например,
language = italian, словарь docstringdictturtle_docstringdict_italian.pyбудет загружен при импорте (если он присутствует на пути импорта, например, в той же директории, что иturtle). - Записи exampleturtle и examplescreen определяют имена этих объектов, как они встречаются в docstrings. Преобразование docstrings методов в docstrings функций удалит эти имена из docstrings.
-
using_IDLE: Установите значение
Trueесли вы регулярно работаете с IDLE и его параметром-n(«нет дочернего процесса»). Это предотвратитexitonclick()от входа в основной цикл.
В директории, где хранится turtle, может быть файл turtle.cfg, а также дополнительный в текущей рабочей директории. Последний переопределит настройки первого.
Директория Lib/turtledemo содержит файл turtle.cfg. Вы можете изучить его в качестве примера и увидеть его влияние при запуске демо-версий (предпочтительно не изнутри просмотрщика демо).
turtledemo — Сценарии демонстраций
Пакет turtledemo включает набор сценариев демонстраций. Эти сценарии можно запускать и просматривать с помощью предоставленного просмотрщика демо следующим образом:
python -m turtledemo
В качестве альтернативы вы можете запустить сценарии демонстраций по отдельности. Например,
python -m turtledemo.bytedesign
В директории пакета turtledemo находятся:
- Просмотрщик демонстраций
__main__.py, который можно использовать для просмотра исходного кода сценариев и одновременного запуска. - Несколько сценариев, демонстрирующих различные возможности модуля
turtle. Примеры можно найти в меню «Примеры». Их также можно запускать автономно. - Файл
turtle.cfgслужит примером того, как создавать и использовать такие файлы.
Сценарии демонстраций:
Название | Описание | Функции |
|---|---|---|
bytedesign | сложный классический узор графики черепахи | |
chaos | графики динамики Верхульста, показывает, что вычисления компьютера могут давать результаты, иногда противоречащие здравому смыслу | координаты мира |
clock | аналоговые часы, показывающие время вашего компьютера | черепахи как стрелки часов, ontimer |
colormixer | экспериментировать с r, g, b | |
forest | 3 дерева по ширине | случайность |
fractalcurves | кривые Гильберта и Коха | рекурсия |
lindenmayer | этноматематика (индийские коламы) | система L |
minimal_hanoi | Башни Ханой | Прямоугольные черепахи как диски Ханой (форма, размер формы) |
nim | играйте в классическую игру ним с тремя кучами палочек против компьютера. | черепахи как палочки ним, управляемая событиями (мышь, клавиатура) |
paint | супер минималистическая программа рисования | |
peace | элементарный | черепаха: вид и анимация |
penrose | апериодическая плитка с дельтами и стрелками | |
planet_and_moon | моделирование гравитационной системы | сложные формы, |
rosette | узор из статьи Википедии о графике черепахи | |
round_dance | танцующие черепахи, вращающиеся парами в противоположных направлениях | сложные формы, клон размер формы, наклон, get_shapepoly, update |
sorting_animate | визуальная демонстрация различных методов сортировки | простая выравнивание, случайность |
tree | дерево (графическое) по ширине (использование генераторов) | |
two_canvases | простой дизайн | черепахи на двух холстах |
yinyang | ещё один элементарный пример |
Приятного пользования!
Изменения с момента 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
- Методы
Turtleshearfactor(),shapetransform()иget_shapepoly()были добавлены. Таким образом, весь спектр обычных линейных преобразований теперь доступен для преобразования форм черепахи.tiltangle()был усовершенствован: теперь его можно использовать для получения или установки угла наклона.settiltangle()устарел. - Метод
Screenonkeypress()был добавлен в качестве дополнения кonkey(). Поскольку последний связывает действия с событием отпускания клавиши, был также добавлен псевдоним:onkeyrelease(). - Метод
Screen.mainloopбыл добавлен, поэтому больше нет необходимости использовать самостоятельную функциюmainloop()при работе с объектамиScreenиTurtle. - Были добавлены два метода ввода:
Screen.textinputиScreen.numinput. Они отображают диалоговые окна ввода и возвращают строки и числа соответственно. - В каталог
Lib/turtledemoбыли добавлены два скрипта примеровtdemo_nim.pyиtdemo_round_dance.py.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/turtle.html