turtle
— Черепашья графика
Введение
Черепашья графика является популярным способом знакомства с программированием для детей. Была частью оригинального языка программирования Logo, разработанного Уолли Фейрцейгом (Wally Feurzeig), Сеймуром Папертом (Seymour Papert) и Синтией Соломон (Cynthia Solomon) в 1967 году.
Представьте себе роботизированную черепаху, начинающуюся с (0, 0) в плоскости
x-y. После import turtle
дайте ей команду turtle.forward(15)
и она переместится (на
экране!) на 15 пикселей в направлении, к которому она обращена, рисуя линию по мере
движения. Передайте ей команду turtle.right(25)
, и она повернётся на месте на 25 градусов
по часовой стрелке.
Комбинируя эти и подобные команды, можно легко рисовать сложные формы и изображения.
Модуль turtle
— это расширенная реализация одноименного модуля из
стандартного дистрибутива Python до версии Python 2.5.
Он пытается сохранить достоинства старого модуля turtle и быть (почти) на 100%
совместимым с ним. Это означает, в первую очередь, чтобы дать возможность
обучающемуся программисту использовать все команды, классы и методы в
интерактивном режиме при использовании модуля из IDLE, запущенного с
переключателем -n
.
Модуль turtle предоставляет примитивы черепашьей графики, как
объектно-ориентированными, так и процедурно-ориентированными способами.
Поскольку он использует tkinter
для базовой графики, ему необходима
версия Python, установленная с поддержкой Tk.
Объектно-ориентированный интерфейс использует по существу два+два класса:
Класс
TurtleScreen
определяет графические окна как площадку для рисования черепах. Его конструктору требуется аргументtkinter.Canvas
илиScrolledCanvas
. Его следует использовать, когдаturtle
применяется как часть какого-либо приложения.Функция
Screen()
возвращает объект одиночку подклассаTurtleScreen
. Функцию следует использовать, когдаturtle
используется как автономный инструмент для создания графики. Т. к. это объект одиночка, наследование от его класса невозможно.Все методы TurtleScreen/Screen также существуют как функции, т. е. как часть интерфейса, ориентированного на процедуры.
RawTurtle
(алиас:RawPen
) определяет объекты черепахи, которые рисуются наTurtleScreen
. Его конструктору требуется в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, поэтому объекты RawTurtle знают, где рисовать.Производным от RawTurtle является подкласс
Turtle
(псевдоним:Pen
), который основан на «экземпляре»Screen
, создаваемый автоматически, если его ещё не существует.Все методы RawTurtle/Turtle также существуют как функции, т. е. часть интерфейса, ориентированного на процедуры.
Процедурный интерфейс предоставляет функции, производные от методов классов
Screen
и Turtle
. У них те же имена, что и соответствующие методы.
Объект экрана создаётся автоматически при каждом вызове функции, производной от
метода Screen. Объект черепахи (без имени) автоматически создаётся при каждом
вызове любой функции, производной от метода черепахи.
Для использования нескольких черепах на экране необходимо использовать объектно-ориентированный интерфейс.
Примечание
В следующей документации приведён список аргументов для функций. У методов, конечно, есть дополнительный первый аргумент self который здесь пропущен.
Обзор доступных методов Turtle и Screen
Методы Turtle
- Движение черепахи
- Двигаться и рисовать
- Рассказать о состоянии Черепахи
- Настройка и измерение
- Управление Pen
- Состояние рисования
- Управление цветом
- Заполнение
- Больше контроля рисования
- Состояние черепахи
- Видимость
- Внешний вид
- Использование событий
- Специальные методы Turtle
Методы TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для Screen
Методы RawTurtle/Turtle и соответствующие функции
Большинство примеров в этом разделе относятся к сущности черепахи под
названием turtle
.
Движение черепахи
-
turtle.
forward
(distance) -
turtle.
fd
(distance) Параметры: distance – число (целое число или число с плавающей запятой) Двигать черепаху вперёд на указанный distance, в сторону направляется черепахи.
>>> turtle.position() (0.00,0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00)
-
turtle.
back
(distance) -
turtle.
bk
(distance) -
turtle.
backward
(distance) Параметры: distance – число Переместить черепаху назад на distance, противоположную направлению, в котором движется черепаха. Не меняет направление черепахи.
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
-
turtle.
right
(angle) -
turtle.
rt
(angle) Параметры: angle – число (целое число или число с плавающей запятой) Повернуть черепаху направо на angle единиц. (Единицы измерения по умолчанию являются градусами, но могут быть установлены с помощью функций
degrees()
иradians()
). Ориентация угла зависит от режима черепахи, см.mode()
.>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
-
turtle.
left
(angle) -
turtle.
lt
(angle) Параметры: angle – число (целое число или число с плавающей запятой) Повернуть черепаху налево на angle единиц. (Единицы измерения по умолчанию являются градусами, но могут устанавливаться с помощью функций
degrees()
иradians()
). Ориентация угла зависит от режима черепахи, см.mode()
.>>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0
-
turtle.
goto
(x, y=None) -
turtle.
setpos
(x, y=None) -
turtle.
setposition
(x, y=None) Параметры: - x – число или пара/вектор чисел
- y – число или
None
Если y равно
None
, x должна быть пара координат илиVec2D
(например, как возвращенныйpos()
).Переместить черепаху в абсолютное положение. Если перо расположено вниз, провести линию. Не меняя ориентацию черепахи.
>>> tp = turtle.pos() >>> tp (0.00,0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00)
-
turtle.
setx
(x) Параметры: x – число (целое число или число с плавающей запятой) Установить первую координату черепахи на x, а вторую оставить без изменений.
>>> turtle.position() (0.00,240.00) >>> turtle.setx(10) >>> turtle.position() (10.00,240.00)
-
turtle.
sety
(y) Параметры: y – число (целое число или число с плавающей запятой) Задать для второй координаты черепахи значение y, оставляя первую координату неизменной.
>>> turtle.position() (0.00,40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00,-10.00)
-
turtle.
setheading
(to_angle) -
turtle.
seth
(to_angle) Параметры: to_angle – число (целое число или число с плавающей запятой) Установить ориентацию черепахи на to_angle. Вот некоторые общие направления в градусах:
стандартный режим logo режим 0 - восток 0 - север 90 - север 90 - восток 180 - запад 180 - юг 270 - юг 270 - запад >>> turtle.setheading(90) >>> turtle.heading() 90.0
-
turtle.
home
() Переместить черепаху в исходную точку — координаты (0,0) и повернув её голову в её начальное положение (которая зависит от режима, см.
mode()
).>>> turtle.heading() 90.0 >>> turtle.position() (0.00,-10.00) >>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0
-
turtle.
circle
(radius, extent=None, steps=None) Параметры: - radius – число
- extent – число (или
None
) - steps – целое число (или
None
)
Нарисовать круг с заданным radius. Центр — это radius единиц слева от черепахи; угол extent определяет, какая часть окружности нарисована. Если extent не указан, нарисовать весь круг. Если extent не является полным кругом, одна конечная точка дуги является текущим положением пера. Провести дугу против часовой стрелки, если radius положительный, в противном случае — по часовой стрелке. Наконец, направление черепахи изменяется на extent.
Поскольку окружность аппроксимируется вписанным правильным многоугольником, steps определяет количество шагов для использования. Если он не указан, он будет рассчитан автоматически. Может использоваться для построения правильных многоугольников.
>>> turtle.home() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(50) >>> turtle.position() (-0.00,0.00) >>> turtle.heading() 0.0 >>> turtle.circle(120, 180) # нарисовать полукруг >>> turtle.position() (0.00,240.00) >>> turtle.heading() 180.0
-
turtle.
dot
(size=None, *color)
-
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
() Отменить (повторно) последнее действие (действия) черепахи. Количество доступных действий отмены определяется размером undobuffer.
>>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo()
-
turtle.
speed
(speed=None) Параметры: speed – целое число в диапазоне 0..10 или speedstring (см. ниже) Задать скорость черепахи целым числом в диапазоне 0..10. Если аргумент не указан, вернуть текущую скорость.
Если введено число больше 10 или меньше 0.5, скорость устанавливается на 0. Строки скорости сопоставляются со значениями скорости следующим образом:
- «fastest»: 0
- «fast»: 10
- «normal»: 6
- «slow»: 3
- «slowest»: 1
Скорости от 1 до 10 ускоряют анимацию рисования линий и поворота черепах.
Внимание: speed = 0 означает, что анимация не используется. forward/back заставляет черепаху прыгать и также влево/вправо заставляет черепаху мгновенно повернуться.
>>> 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), вектором или другой черепахой. Это зависит от начальной ориентации черепахи, которая зависит от режима — «standard»/«world» или «logo».
>>> turtle.goto(10, 10) >>> turtle.towards(0,0) 225.0
-
turtle.
xcor
() Возвращает координату x черепахи.
>>> turtle.home() >>> turtle.left(50) >>> turtle.forward(100) >>> turtle.pos() (64.28,76.60) >>> print(round(turtle.xcor(), 5)) 64.27876
-
turtle.
ycor
() Возвращает координату y черепахи.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print(turtle.pos()) (50.00,86.60) >>> print(round(turtle.ycor(), 5)) 86.60254
-
turtle.
heading
() Возвращает текущий курс черепахи (значение зависит от режима черепахи, см.
mode()
).>>> turtle.home() >>> turtle.left(67) >>> turtle.heading() 67.0
-
turtle.
distance
(x, y=None) Параметры: - x – число или пара/вектор чисел или черепаший экземпляр
- y – число, если x является числом, иначе
None
Возвращает расстояние от черепахи до (x, y), заданного вектора или другой черепахи в шаговых единицах черепахи.
>>> turtle.home() >>> turtle.distance(30,40) 50.0 >>> turtle.distance((30,40)) 50.0 >>> joe = Turtle() >>> joe.forward(77) >>> turtle.distance(joe) 77.0
Параметры измерения
-
turtle.
degrees
(fullcircle=360.0) Параметры: fullcircle – число Установить единицы измерения угла, т. е. Задать число «градусов» для полного круга. Значение по умолчанию - 360 градусов.
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 Изменить единицу измерения угла на град (также известный как gon, grade или gradian и равный 1/100-й от прямого угла.) >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 >>> turtle.degrees(360) >>> turtle.heading() 90.0
-
turtle.
radians
() Установить единицы измерения угла в радианы. Эквивалентно
degrees(2*math.pi)
.>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966
Контроль за пером
Состояние рисунка
-
turtle.
pendown
() -
turtle.
pd
() -
turtle.
down
() Поместить перо вниз — рисование при движении.
-
turtle.
penup
() -
turtle.
pu
() -
turtle.
up
() Поместить перо вверх — никакого рисунка при движении.
-
turtle.
pensize
(width=None) -
turtle.
width
(width=None) Параметры: width – положительное число Установить толщину линии на width или вернуть её. Если для resizemode установлено значение «auto», а turtleshape является polygon, этот многоугольник рисуется с одинаковой толщиной линии. Если аргумент не указан, возвращается текущий размер пера.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # отсюда нарисованы линии шириной 10
-
turtle.
pen
(pen=None, **pendict) Параметры: - pen – словарь с некоторыми или всеми перечисленными ниже ключами
- pendict – один или несколько ключевых аргументов с перечисленными ниже ключами
Вернуть или установить атрибуты пера в «словарь пера» со следующими парами ключ/значение:
- «shown»: True/False
- «pendown»: True/False
- «pencolor»: цветная строка или цветовой кортеж
- «fillcolor»: цветная строка или цветовой кортеж
- «pensize»: положительное число
- «speed»: число в диапазоне 0..10
- «resizemode»: «auto» или «user» или «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)
- Установить для fillcolor значение colorstring, которое является строкой
спецификации цвета Tk, например
"red"
,"yellow"
или"#33cc8c"
. fillcolor((r, g, b))
- Установить цвет заливки на цвет RGB, представленный кортежем r, g и b.
Каждый из r, g и b должен находиться в диапазоне 0..colormode, где
colormode равен 1.0 или 255 (см.
colormode()
). fillcolor(r, g, b)
- Установить цвет заливки на цвет RGB, представленный r, g и b. Каждый из r, g и b должен находиться в диапазоне 0..colormode.
Если форма turtleshape представляет собой многоугольник, внутренняя часть этого многоугольника рисуется с помощью вновь заданного цвета заливки.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> turtle.pencolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor((50, 193, 143)) # Целые числа, а не числа с плавающей точкой >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0)
-
turtle.
color
(*args) Вернуть или установить цвет пера и цвет заливки.
Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:
color()
- Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или
кортежей спецификации цвета, возвращаемых
pencolor()
иfillcolor()
. color(colorstring)
,color((r,g,b))
,color(r,g,b)
- Входные данные, как в
pencolor()
, устанавливают для обоих цветов заливки и цвета пера заданное значение. color(colorstring1, colorstring2)
,color((r1,g1,b1), (r2,g2,b2))
- Эквивалентно
pencolor(colorstring1)
иfillcolor(colorstring2)
и аналогично, если используется другой формат ввода.
Если turtleshape — многоугольник, контур и внутренняя часть этого многоугольника вырисовывается с новыми установленными цветами.
>>> 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
() Независимо от того, заполняются ли области перекрытия для самопересекающихся многоугольников или нескольких фигур, зависит от графики операционной системы, типа перекрытия и количества перекрытий. Например, звезда «Черепаха» может быть либо полностью жёлтой, либо содержать несколько белых областей.
>>> 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 – одна из строк «left», «center» или right»
- font – тройной (имя шрифта, размер шрифта, тип шрифта)
Написать текст — строковое представление arg в текущей позиции черепахи по align («left», «center» или «right») и с заданным шрифтом. Если у 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. Изначально существуют многоугольники следующих форм: «arrow», «turtle», «circle», «square», «triangle», «classic». Чтобы узнать, как работать с формами, см. Screen метод
register_shape()
.>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
-
turtle.
resizemode
(rmode=None) Параметры: rmode – одна из строк «auto», «user», «noresize» Установить для resizemode одно из значений: «auto», «user», «noresize». Если rmode не указан, вернуть текущий режим изменения размера. У различных режимов изменения размера есть следующие эффекты:
- «auto»: адаптирует внешний вид черепахи в соответствии со значением pensize.
- «user»: адаптирует внешний вид черепахи в соответствии со значениями
stretchfactor и outlinewidth (контура), которые установлены
shapesize()
. - «noresize»: никакой адаптации внешнего вида черепахи не происходит.
resizemode("user")
вызываетсяshapesize()
при использовании с аргументами.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
-
turtle.
shapesize
(stretch_wid=None, stretch_len=None, outline=None) -
turtle.
turtlesize
(stretch_wid=None, stretch_len=None, outline=None) Параметры: - stretch_wid – положительное число
- stretch_len – положительное число
- outline – положительное число
Вернуть или установить атрибуты пера x/y-факторы растяжения и/или контура. Установить resizemode на «user». Если и только если для resizemode установлено значение «user», черепаха будет отображаться растянутой в соответствии с её факторами растяжения: 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 – число (необязательно) Установить или вернуть текущий коэффициент сдвига. Сдвинуть форму черепахи в соответствии с заданным коэффициентом сдвига, который является тангенсом угла сдвига. У черепахи не изменяется курс (направление движения). Если сдвиг не задан: вернуть текущий коэффициент сдвига, т.е. её тангенс угла сдвига, по которому разделяются линии, параллельные направлению движения черепахи.
>>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.shearfactor(0.5) >>> turtle.shearfactor() 0.5
-
turtle.
tilt
(angle) Параметры: angle – число Повернуть фигуру черепахи на angle от её текущего угла наклона, но не изменяя направление черепахи (направление движения).
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50)
-
turtle.
settiltangle
(angle) Параметры: angle – число Повернуть фигуру черепахи так, чтобы она указывала в направлении, указанном angle, независимо от текущего угла наклона. Не меняет курс (направление движения) черепахи.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> turtle.fd(50)
Не рекомендуется, начиная с версии 3.1.
-
turtle.
tiltangle
(angle=None) Параметры: angle – число (необязательно) Установить или вернуть текущий угол наклона. Если угол задан, повернуть фигуру черепахи так, чтобы она указывала в направлении, заданном углом, независимо от текущего угла наклона. Не меняет курс (направление движения) черепахи. Если угол не указан: вернуть текущий угол наклона, т.е. её угол между ориентацией формы черепахи и курсом черепахи (направление её движения).
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
-
turtle.
shapetransform
(t11=None, t12=None, t21=None, t22=None) Параметры: - t11 – число (необязательно)
- t12 – число (необязательно)
- t21 – число (необязательно)
- t12 – число (необязательно)
Установка или возвращение текущей матрицы преобразования формы черепахи.
Если ни один из элементов матрицы не задан, вернуть матрицу преобразования как кортеж из 4 элементов. В противном случае установить данные элементы и преобразовать форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 * t22 - t12 * t21 не должен быть нулевым, иначе возникает ошибка. Изменяет коэффициент растяжения, коэффициент сдвига и угол наклона в соответствии с заданной матрицей.
>>> turtle = Turtle() >>> turtle.shape("square") >>> turtle.shapesize(4,2) >>> turtle.shearfactor(-0.5) >>> turtle.shapetransform() (4.0, -1.0, -0.0, 2.0)
-
turtle.
get_shapepoly
() Возвращает текущий многоугольник формы как кортеж пар координат. Её можно использовать для определения новой формы или компонентов составной формы.
>>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) >>> turtle.get_shapepoly() ((50, -20), (30, 20), (-50, 20), (-30, -20))
Использование событий
-
turtle.
onclick
(fun, btn=1, add=None) Параметры: - fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
- btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
- add –
True
илиFalse
– еслиTrue
, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг
Привязать fun к событиям щелчка мыши для черепахи. Если fun
None
, существующие привязки удаляются. Пример для анонимной черепахи, т. е. процедурный способ:>>> def turn(x, y): ... left(180) ... >>> onclick(turn) # Теперь щелчок в черепаху включит её. >>> onclick(None) # привязка к событию будет удалена
-
turtle.
onrelease
(fun, btn=1, add=None) Параметры: - fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
- btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
- add –
True
илиFalse
– еслиTrue
, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг
Связать fun с событиями отпускания кнопки мыши на черепахе. Если fun —
None
, существующие привязки удаляются.>>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> turtle = MyTurtle() >>> turtle.onclick(turtle.glow) # нажав на черепаху, цвет заливки становится красным, >>> turtle.onrelease(turtle.unglow) # отпускание превращает её в прозрачный.
-
turtle.
ondrag
(fun, btn=1, add=None) Параметры: - fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
- btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
- add –
True
илиFalse
– еслиTrue
, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг
Связать fun с событиями перемещения мыши на этой черепахе. Если fun —
None
, существующие привязки удаляются.Замечание: каждой последовательности событий перемещения мыши на черепахе предшествует событие щелчка мыши на этой черепахе.
>>> turtle.ondrag(turtle.goto)
Впоследствии щелчок и перетаскивание черепахи будет перемещать её по экрану, создавая рисунки от руки (если перо опущено).
Специальные методы черепахи
-
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
() Вернуть сам объект черепахи. Единственное разумное использование: как функция для возврата «анонимной черепахи»:
>>> 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 типа «составной».
Добавить к этому объекту необходимое количество компонентов с помощью метода
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 и соответствующие функции
Большинство примеров в этом разделе относятся к сущности 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
() -
turtle.
clearscreen
() Удаляет все рисунки и всех черепах с экрана TurtleScreen. Сбрасывает пустой TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязки событий и трассировки.
Примечание
Метод TurtleScreen доступен как глобальная функция только под именем
clearscreen
. Глобальная функцияclear
является другой функцией, производной от Turtle методаclear
.
-
turtle.
reset
() -
turtle.
resetscreen
() Сбрасывает все черепахи на экране в исходное состояние.
Примечание
Метод TurtleScreen доступен как глобальная функция только под именем
resetscreen
. Глобальная функцияreset
является другой функцией, производной от Turtle методаreset
.
-
turtle.
screensize
(canvwidth=None, canvheight=None, bg=None) Параметры: - canvwidth – положительное целое число, новая ширина холста в пикселях
- canvheight – положительное целое число, новая высота холста в пикселях
- bg – цветная строка или кортеж, новый цвет фона
Если аргументы не указаны, вернуть текущее значение (ширина холста, высота холста). Или изменить размер холста, на котором рисуют черепахи. Не изменяет окно рисования. Для наблюдения за скрытыми частями холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
например, для поиска ошибочно сбежавшей черепахи; -)
-
turtle.
setworldcoordinates
(llx, lly, urx, ury) Параметры: - llx – число, координата x нижнего левого угла холста
- lly – число, координата y нижнего левого угла холста
- urx – число, координата x правого верхнего угла холста
- ury – число, координата y правого верхнего угла холста
Настроить пользовательскую систему координат и при необходимости переключитесь в режим «world». Выполняет
screen.reset()
. Если режим «world» уже активирован, все рисунки перерисовываются в соответствии с новыми координатами.ВНИМАНИЕ: в пользовательских системах координат углы могут показаться искажёнными.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # обычный восьмиугольник
Управление анимацией
-
turtle.
delay
(delay=None) Параметры: delay – положительное целое число Установить или вернуть рисунок через delay в миллисекундах. (Это приблизительно временной интервал между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.
Дополнительный аргумент:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
-
turtle.
tracer
(n=None, delay=None) Параметры: - n – неотрицательное целое число
- delay – неотрицательное целое число
Включить/выключить анимацию черепахи и установить задержку для обновления рисунков. Если задан n, действительно выполняется только каждое n-е регулярное обновление экрана. (Может использоваться для ускорения рисования сложной графики.) При вызове без аргументов возвращает текущее сохраненное значение n. Второй аргумент устанавливает значение задержки (см.
delay()
).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
-
turtle.
update
() Выполнить обновление экрана черепахи. Используется при выключенном трассировщике.
См. также speed()
метод RawTurtle/Turtle.
Использование событий экрана
-
turtle.
listen
(xdummy=None, ydummy=None) Установить фокус на экран черепахи (в порядке собора ключевых событий). Для передачи
listen()
методу onclick предоставляются фиктивные аргументы.
-
turtle.
onkey
(fun, key) -
turtle.
onkeyrelease
(fun, key) Параметры: - fun – функция без аргументов или
None
- key – строка: ключ (например, «a») или ключевой символ (например, «пробел»)
Связать fun с событием отпускания клавиши для клавиши. Если fun —
None
, привязки событий удаляются. Примечание: чтобы иметь возможность регистрировать ключевые события, у экрана черепахи должен быть фокус. (См. методlisten()
.)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- fun – функция без аргументов или
-
turtle.
onkeypress
(fun, key=None) Параметры: - fun – функция без аргументов или
None
- key – строка: ключ (например, «a») или ключевой символ (например, «пробел»)
Привязать fun с событием нажатия клавиши для клавиши, если клавиша задана, или с любым событием нажатия клавиши, если клавиша не указана. Примечание: чтобы иметь возможность регистрировать ключевые события, у экрана черепахи должен быть фокус. (См. метод
listen()
.)>>> def f(): ... fd(50) ... >>> screen.onkey(f, "Up") >>> screen.listen()
- fun – функция без аргументов или
-
turtle.
onclick
(fun, btn=1, add=None) -
turtle.
onscreenclick
(fun, btn=1, add=None) Параметры: - fun – функция с двумя аргументами, которая будет вызвана с координатами точки клика на холсте
- btn – номер кнопки мыши, по умолчанию — 1 (левая кнопка мыши)
- add –
True
илиFalse
– еслиTrue
, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг
Привязать fun к событиям щелчка мыши на экране. Если fun
None
, существующие привязки удаляются.Пример для экземпляра TurtleScreen с именем
screen
и экземпляра Turtle с именемturtle
:>>> screen.onclick(turtle.goto) # Впоследствии нажатие на TurtleScreen будет >>> # заставлять черепаху двигаться в точку щелчка. >>> screen.onclick(None) # снова удалить биндинг событий
Примечание
Метод TurtleScreen доступен как глобальная функция только под именем
onscreenclick
. Глобальная функцияonclick
является другой функцией, производной от Turtle методаonclick
.
-
turtle.
ontimer
(fun, t=0) Параметры: - fun – функция без аргументов
- t – число >= 0
Установить таймер, вызывающий fun через t миллисекунд.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### заставляет черепаху маршировать вокруг >>> running = False
-
turtle.
mainloop
() -
turtle.
done
() Запускает цикл событий — вызов функции основного цикла Tkinter. Должен быть последним оператором в графической программе черепахи. Не должно использоваться, если сценарий запускается из 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 — в основном определяющий текст, какую числовую информацию ввести. По умолчанию: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимального значения для ввода числа и должен находиться в диапазоне minval..maxval, если они даны. В противном случае выдается подсказка, и диалоговое окно остается открытым для исправления. Возвращает введённый номер. Если диалоговое окно отменено, возвращает
None
:>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
Настройки и специальные методы
-
turtle.
mode
(mode=None) Параметры: mode – одно из строк «standard», «logo» или «world» Устанавливает режим черепахи («standard», «logo» или «world») и выполняет сброс. Если режим не задан, возвращает текущий режим.
Режим «standard» совместим со старым
turtle
. Режим «logo» совместим с большинством Logo изображений черепахи. В режиме «world» используются определенные пользователем «мировые координаты». Внимание: в этом режиме углы искажаются, еслиx/y
удельное соотношение не равно 1.Режим Начальный заголовок черепахи положительные углы «standard» направо (восток) против часовой стрелки «logo» вверх (север) по часовой стрелке >>> mode("logo") # сбрасывает черепаху, направляющуюся на север >>> mode() 'logo'
-
turtle.
colormode
(cmode=None) Параметры: cmode – одно из значений 1.0 или 255 Возвращает цветовой код или устанавливает для него значение 1.0 или 255. В дальнейшем r, g, b значения цветовых троек должны находиться в диапазоне 0..cmode.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
-
turtle.
getcanvas
() Вернуть холст 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
объект: установить соответствующую составную форму.
Добавить фигуру черепахи в список фигур 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
(значение по умолчанию), также войти в главный цикл. Примечание: если используется IDLE с переключателем-n
(без подпроцесса), это значение должно устанавливаться наTrue
вturtle.cfg
. В этом случае собственный главный цикл IDLE также активен для клиентского скрипта.
-
turtle.
setup
(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"]) Задать размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены с помощью файла
turtle.cfg
.Параметры: - width – если целое число, размер в пикселях, если float, доля экрана; по умолчанию 50% экрана
- height – если целое число, высота в пикселях, если float, доля экрана; по умолчанию 75% экрана
- startx – если положителен, начальная позиция в пикселях от левого
края экрана, если отрицательный от правого края, если
None
, центрировать окно по горизонтали - starty – если положителен, начальная позиция в пикселях от верхнего
края экрана, если отрицательный от нижнего края, если
None
, центрировать окно по вертикали
>>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # устанавливает окно в 200x200 пикселей, в левом верхнем углу экрана >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) >>> # устанавливает окно на 75% экрана на 50% экрана и центров
-
turtle.
title
(titlestring) Параметры: titlestring – строка, которая показана в строке заголовка черепахи графического окна Установить заголовок окна черепахи на titlestring.
>>> screen.title("Welcome to the turtle zoo!")
Общественные классы
-
class
turtle.
RawTurtle
(canvas) -
class
turtle.
RawPen
(canvas) Параметры: canvas – tkinter.Canvas
,ScrolledCanvas
илиTurtleScreen
Создать черепаху. У черепахи есть все методы, описанные выше как «методы Turtle/RawTurtle».
-
class
turtle.
Turtle
Подкласс RawTurtle, содержит тот же интерфейс, но использует объект
Screen
по умолчанию, созданный автоматически при первой необходимости.
-
class
turtle.
TurtleScreen
(cv) Параметры: cv – tkinter.Canvas
Предоставляет методы, ориентированные на экран, такие как
setbg()
и т. д., описанные выше.
-
class
turtle.
Screen
Подкласс TurtleScreen с добавлением четырёх методов.
-
class
turtle.
ScrolledCanvas
(master) Параметры: master – некоторый виджет Tkinter для хранения ScrolledCanvas, т. е. Tkinter-холст с добавленными полосами прокрутки Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве игровой площадки для черепах.
-
class
turtle.
Shape
(type_, data) Параметры: type_ – один из строк «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") >>> # ... добавить больше компонентов и затем использовать register_shape()
См. Составные формы.
-
-
class
turtle.
Vec2D
(x, y) Класс двумерных векторов, используемый в качестве вспомогательного класса для реализации графики черепахи. Может быть также полезен для черепашьих графических программ. Унаследован от кортежа, поэтому вектор является кортежем!
Предоставляет (для a, векторов b, числа k):
a + b
векторное сложениеa - b
векторное вычитаниеa * b
скалярное произведениеk * a
иa * k
умножение со скаляромabs(a)
абсолютное значение аa.rotate(angle)
вращение
Справка и настройка
Как пользоваться помощью
Публичные методы классов Screen и Turtle подробно документируются с помощью докстрингов. Таким образом, они могут использоваться как онлайн-справки через справочные средства 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") Параметры: filename – строка, используемая как имя файла Создать и записать словарь строк документации в скрипт Python с заданным именем файла. Функция должна вызываться явно (она не используется классами графики черепахи). Словарь строк документации будет записан в сценарий Python
filename.py
. Он предназначен для использования в качестве шаблона для перевода строк документации на разные языки.
Если вы (или ваши студенты) хотите использовать turtle
с помощью
онлайн-справки на родном языке, вы должны перевести докстринги и сохранить
полученный файл, например, как turtle_docstringdict_german.py
.
Если в файле turtle.cfg
есть соответствующая запись, этот словарь будет
прочитан во время импорта и заменит исходные английские докстринги.
На момент написания этой статьи существует докстринг словари на немецком и итальянском языках. (Запросы пожалуйста присылайте на glingl@aon.at.)
Руководство по настройке Screen и Turtles
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить наилучшую совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает
особенности данного модуля или лучше соответствует вашим потребностям,
например, для использования в классе, вы можете подготовить файл конфигурации
turtle.cfg
, читаемый во время импорта и изменяющим конфигурацию в
соответствии с его настройками.
Встроенная конфигурация будет соответствовать следующей конфигурации turtle.cfg:
width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False
Краткое объяснение выбранных записей:
- Первые четыре строки соответствуют аргументам метода
Screen.setup()
. - Строки 5 и 6 соответствуют аргументам метода
Screen.screensize()
. - shape может быть любой из
встроенных фигур, например: arrow, turtle и т.д. Для получения дополнительной
информации выполните
help(shape)
. - Если вы не хотите использовать цвет заливки (т. е. сделать черепаху прозрачной), вы должны написать
fillcolor = ""
(но все заполненный строки не должны содержать кавычек в cfg-файле). - Если вы хотите отразить состояние черепахи, вы должны использовать
resizemode = auto
. - Если установлен, например,
language = italian
докстринг dictturtle_docstringdict_italian.py
будет загружен во время импорта (если присутствует в пути импорта, например, в том же каталоге, что иturtle
.) - Записи exampleturtle и examplescreen определяют имена этих объектов по мере их появления в докстрингах. Преобразование method-докстрингов в function-докстрингов удалит эти имена из докстрингов.
- 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
. Доступ к примерам можно получить из меню «Examples». Они также могут выполняться автономно. - Файл
turtle.cfg
, служит примером написания и использования таких файлов.
Демонстрационные сценарии:
Имя | Описание | Особенности |
---|---|---|
bytedesign | сложный классический черепаший графический шаблон | tracer() ,
delay,
update() |
chaos | График динамики Верхульста показывает, что компьютерные вычисления могут иногда генерировать результаты против ожиданий здравого смысла | мировые координаты |
clock | аналоговые часы, отображающие время компьютера | черепахи как ручные часы, ontimer |
colormixer | эксперимент с r, g, b | ondrag() |
forest | 3 дерева в ширину | рандомизация |
fractalcurves | Кривые Гильберта и Коха | рекурсия |
lindenmayer | этноматематика (индейские коламы) | L-система |
minimal_hanoi | Башни Ханоя | Прямоугольные черепахи как ханойские диски (форма, размер формы) |
nim | играть в классическую игру ним с тремя кучами палок против компьютера. | черепахи как нимстики, управляемые событиями (мышь, клавиатура) |
paint | супер минималистичная программа рисования | onclick() |
peace | элементарный | черепаха: внешний вид и анимация |
penrose | апериодическая мозаика с воздушными змеями и дротиками | stamp() |
planet_and_moon | моделирование гравитационной системы | составные фигуры,
Vec2D |
round_dance | танцующие черепахи вращаются попарно в противоположном направлении | составные фигуры, клонировать форму, наклонять, get_shapepoly, обновлять |
sorting_animate | наглядная демонстрация различных способов сортировки | простое выравнивание, рандомизация |
tree | (графическое) первое дерево ширины (с использованием генераторов) | clone() |
two_canvases | простой дизайн | черепахи на двух полотнах |
wikipedia | узор из статьи википедии о черепашьей графики | clone() ,
undo() |
yinyang | другой элементарный пример | circle() |
Развлекайтесь!
Изменения после Python 2.6
- Методы
Turtle.tracer()
,Turtle.window_width()
иTurtle.window_height()
были исключены. Методы с этими именами и функциональными возможностями теперь доступны только как методыScreen
. Функции, полученные на их основе, остаются доступными. (Фактически уже в Python 2.6 эти методы были просто дубликатами соответствующих методовTurtleScreen
/Screen
.) - Метод
Turtle.fill()
исключен. Поведениеbegin_fill()
иend_fill()
несколько изменилось: теперь каждый процесс заполнения должен завершатьсяend_fill()
вызовом. - Добавлен
Turtle.filling()
метода. Это возвращает логическое значение:True
если идет процесс заполнения,False
иначе. Это поведение соответствуетfill()
вызову без аргументов в Python 2.6.
Изменения с Python 3.0
- Добавлены методы
Turtle.shearfactor()
,Turtle.shapetransform()
иTurtle.get_shapepoly()
. Таким образом, теперь доступно полное множество обычных линейных преобразований для преобразования форм черепахи. ФункциональностьTurtle.tiltangle()
была расширена: теперь её можно использовать для получения или установки угла наклона.Turtle.settiltangle()
устарел. - Метод
Screen.onkeypress()
был добавлен в качестве дополнения кScreen.onkey()
, который фактически связывает действия с событием отпускания клавиши. Соответственно, у последнего есть псевдоним:Screen.onkeyrelease()
. - Добавлен метод
Screen.mainloop()
. Поэтому при работе только с объектами Screen и Turtle нельзя больше дополнительно импортироватьmainloop()
. - Добавлены два метода ввода
Screen.textinput()
иScreen.numinput()
. Эти всплывающие диалоговые окна ввода и возвращают строки и цифры соответственно. - В каталог
tdemo_nim.py
добавлены два примера сценариевtdemo_round_dance.py
иLib/turtledemo
.