turtle — Графика черепахи
Исходный код: Lib/turtle.py
Введение
Графика черепахи — популярный способ познакомить детей с программированием. Она была частью оригинального языка программирования Logo, разработанного Уолли Фёрзейгом, Сеймуром Папертом и Синтией Соломон в 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) определяет объекты Turtle, которые рисуют наTurtleScreen. Его конструктор принимает в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, чтобы объекты RawTurtle знали, где рисовать.Производным от RawTurtle является подкласс
Turtle(псевдоним:Pen), который рисует на экземпляреScreen, автоматически создаваемом, если он ещё не существует.Все методы RawTurtle/Turtle также существуют в виде функций, то есть являются частью процедурного интерфейса.
Процедурный интерфейс предоставляет функции, которые получены из методов классов Screen и Turtle. Они имеют те же имена, что и соответствующие методы. Объект экрана автоматически создается всякий раз, когда вызывается функция, полученная из метода Screen. Объект черепахи (без имени) автоматически создается всякий раз, когда вызывается любая из функций, полученная из метода Turtle.
Для использования нескольких черепах на одном экране необходимо использовать объектно-ориентированный интерфейс.
Примечание
В последующей документации приведен список аргументов для функций. Методы, конечно же, имеют дополнительный первый аргумент self, который здесь опущен.
Обзор доступных методов черепахи и экрана
Методы черепахи
- Движение черепахи
-
- Перемещение и рисование
- Определение состояния черепахи
- Установка и измерение
- Управление пером
-
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительный контроль рисования
- Состояние черепахи
-
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
Методы TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для экрана
Методы RawTurtle/Turtle и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру черепахи под названием turtle.
Движение черепахи
-
turtle.forward(distance) -
turtle.fd(distance) -
- Параметры
-
distance – число (целое или с плавающей точкой)
Переместить черепаху вперед на указанное расстояние в направлении, в котором она движется.
>>> turtle.position() (0.00,0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00)
-
turtle.back(distance) -
turtle.bk(distance) -
turtle.backward(distance) -
- Параметры
-
distance – число
Переместить черепаху назад на расстояние, противоположно направлению движения черепахи. Не изменять направление движения черепахи.
>>> turtle.position() (0.00,0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00,0.00)
-
turtle.right(angle) -
turtle.rt(angle) -
- Параметры
-
angle – число (целое или с плавающей точкой)
Повернуть черепаху вправо на угол единиц. (Единицы по умолчанию — градусы, но их можно изменить с помощью функций
degrees()иradians().) Направление угла зависит от режима черепахи, см.mode().>>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0
-
turtle.left(angle) -
turtle.lt(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)
Нарисовать окружность с заданным радиусом. Центр находится на радиус единиц влево от черепахи; 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() -
Отпечатать копию формы черепахи на холст в текущей позиции черепахи. Возвращает идентификатор отпечатка, который можно использовать для его удаления, вызвав
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() -
Отменить (многократно) последнее действие черепахи. Количество доступных отмен определяется размером буфера отмены.
>>> 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”: «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) -
Установить цвет заливки на 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 – одна из строк «left», «center» или «right»
- 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 (outline), которые задаются
shapesize(). - «без изменения размера»: адаптация внешнего вида черепахи не происходит.
resizemode("user")вызываетсяshapesize()при использовании с аргументами.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
-
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None) -
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None) -
- Параметры
-
- stretch_wid – положительное число
- stretch_len – положительное число
- outline – положительное число
Возвращает или задаёт атрибуты пера x/y-stretchfactors и/или outline. Устанавливает режим изменения размера в «пользователь». Если и только если режим изменения размера установлен в «пользователь», черепаха будет отображаться растянутой в соответствии с ее 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 – число (необязательно)
Установить или вернуть текущий shearfactor. Сдвинуть форму черепахи в соответствии с заданным shearfactor shear, который представляет собой тангенс угла сдвига. Не изменять направление движения черепахи. Если shear не задан: вернуть текущий shearfactor, т. е. тангенс угла сдвига, при котором линии, параллельные направлению черепахи, сдвигаются.
>>> 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, независимо от текущего угла наклона. Не изменять направление движения черепахи. Если угол не задан: вернуть текущий угол наклона, т. е. угол между ориентацией формы черепахи и направлением черепахи (ее направлением движения).
>>> 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() -
turtle.clearscreen() -
Удаляет все рисунки и всех черепах из TurtleScreen. Сбрасывает теперь пустой TurtleScreen в его начальное состояние: белый фон, нет фонового изображения, нет привязок событий и включен режим отслеживания.
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
clearscreen. Глобальная функцияclear— другая, полученная из метода черепахиclear.
-
turtle.reset() -
turtle.resetscreen() -
Сбрасывает всех черепах на экране в их начальное состояние.
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
resetscreen. Глобальная функцияreset— другая, полученная из метода черепахиreset.
-
turtle.screensize(canvwidth=None, canvheight=None, bg=None) -
- Параметры
-
- canvwidth – положительное целое число, новая ширина холста в пикселях
- canvheight – положительное целое число, новая высота холста в пикселях
- bg – строка цвета или кортеж цвета, новый цвет фона
Если аргументы не указаны, возвращает текущие значения (canvaswidth, canvasheight). Иначе изменяет размер холста, на котором черепахи рисуют. Не изменяет окно отрисовки. Чтобы увидеть скрытые части холста, используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые были вне холста до этого.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
Например, для поиска ошибочно сбежавшей черепахи ;-)
-
turtle.setworldcoordinates(llx, lly, urx, ury) -
- Параметры
-
- llx – число, координата x левого нижнего угла холста
- lly – число, координата y левого нижнего угла холста
- urx – число, координата x правого верхнего угла холста
- ury – число, координата y правого верхнего угла холста
Настраивает пользовательскую систему координат и переключается на режим «мир», если необходимо. Это выполняет
screen.reset(). Если режим «мир» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.ВНИМАНИЕ: в пользовательских системах координат углы могут выглядеть искаженными.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
Управление анимацией
-
turtle.delay(delay=None) -
- Параметры
-
delay – положительное целое число
Устанавливает или возвращает задержку отрисовки в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка отрисовки, тем медленнее анимация.
Необязательный аргумент:
>>> screen.delay() 10 >>> screen.delay(5) >>> screen.delay() 5
-
turtle.tracer(n=None, delay=None) -
- Параметры
-
- n – неотрицательное целое число
- delay – неотрицательное целое число
Включает/выключает анимацию черепахи и устанавливает задержку для обновления рисунков. Если указано n, выполняется только каждое n-е обычное обновление экрана. (Может использоваться для ускорения отрисовки сложных графиков.) При вызове без аргументов возвращает текущее сохраненное значение n. Второй аргумент устанавливает значение задержки (см.
delay()).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
-
turtle.update() -
Выполняет обновление TurtleScreen. Используется, когда tracer выключен.
См. также метод RawTurtle/Turtle speed().
Использование событий экрана
-
turtle.listen(xdummy=None, ydummy=None) -
Фокусирует TurtleScreen (для сбора событий нажатия клавиш). Аргументы-заглушки предоставлены для возможности передачи
listen()в метод onclick.
-
turtle.onkey(fun, key) -
turtle.onkeyrelease(fun, key) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: клавиша (например, «a») или символ клавиши (например, «space»)
-
fun – функция без аргументов или
Привязывает fun к событию отпускания клавиши. Если fun —
None, привязки событий удаляются. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. методlisten().)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
-
turtle.onkeypress(fun, key=None) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: клавиша (например, «a») или символ клавиши (например, «space»)
-
fun – функция без аргументов или
Привязывает fun к событию нажатия клавиши, если указана клавиша, или к любому событию нажатия клавиши, если клавиша не указана. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. метод
listen().)>>> def f(): ... fd(50) ... >>> screen.onkey(f, "Up") >>> screen.listen()
-
turtle.onclick(fun, btn=1, add=None) -
turtle.onscreenclick(fun, btn=1, add=None) -
- Параметры
-
- fun – функция с двумя аргументами, которая будет вызываться с координатами щелкнутой точки на холсте
- btn – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)
-
add –
TrueилиFalse— еслиTrue, будет добавлена новая привязка, иначе она заменит предыдущую привязку
Привязывает fun к событиям щелчка мыши на этом экране. Если fun —
None, существующие привязки удаляются.Пример для экземпляра TurtleScreen с именем
screenи экземпляра Turtle с именемturtle:>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
onscreenclick. Глобальная функцияonclick— другая, полученная из метода черепахи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”) и выполняет сброс. Если режим не указан, возвращается текущий режим.
Режим “standard” совместим со старой
turtle. Режим “logo” совместим с большинством графических систем черепах Logo. Режим “world” использует определённые пользователем «координаты мира». Внимание: в этом режиме углы отображаются искажённо, еслиx/yкоэффициент масштаба не равен 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 –
tkinter.Canvas,ScrolledCanvasилиTurtleScreen
Создаёт черепаху. Черепаха имеет все описанные выше методы как «методы черепахи/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") >>> # ... 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)вращение
-
Справочная информация и настройка
Как использовать справку
Общедоступные методы классов Screen и Turtle подробно документированы с помощью docstring. Поэтому их можно использовать как онлайн-справку через средства справки Python:
- При использовании IDLE всплывающие подсказки отображают сигнатуры и первые строки docstring вызываемых функций/методов.
-
Вызов
help()для методов или функций отображает docstring:>>> 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() -
Docstring функций, полученных из методов, имеют изменённый формат:
>>> 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()
Эти изменённые docstring создаются автоматически вместе с определениями функций, полученных из методов, во время импорта.
Перевод docstring на разные языки
Существует утилита для создания словаря, ключами которого являются имена методов, а значениями — docstring общедоступных методов классов Screen и Turtle.
-
turtle.write_docstringdict(filename="turtle_docstringdict") -
- Параметры
-
filename – строка, используемая в качестве имени файла
Создаёт и записывает словарь docstring в Python-скрипт с заданным именем файла. Эта функция должна вызываться явно (она не используется классами графики черепахи). Словарь docstring будет записан в Python-скрипт
filename.py. Он предназначен для использования в качестве шаблона для перевода docstring на разные языки.
Если вы (или ваши студенты) хотите использовать turtle с онлайн-справкой на родном языке, вам необходимо перевести docstring и сохранить получившийся файл, например, как turtle_docstringdict_german.py.
Если в вашем файле turtle.cfg есть соответствующая запись, этот словарь будет загружен во время импорта и заменит оригинальные английские docstring.
На момент написания этой документации существуют словари docstring на немецком и итальянском языках. (Запросы, пожалуйста, отправляйте на 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 может быть любой из встроенных форм, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте
help(shape). - Если вы хотите не использовать fillcolor (т.е. сделать черепаху прозрачной), вам необходимо написать
fillcolor = ""(но все непустые строки не должны содержать кавычек в файле cfg). - Если вы хотите отобразить состояние черепахи, вам нужно использовать
resizemode = auto. - Если вы установите, например,
language = italian, docstringdictturtle_docstringdict_italian.pyбудет загружен во время импорта (если он присутствует в пути импорта, например, в той же директории, что иturtle. - Записи exampleturtle и examplescreen определяют имена этих объектов, как они встречаются в docstring. Преобразование docstring методов в docstring функций удалит эти имена из docstring.
-
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 | моделирование гравитационной системы | сложные фигуры, |
round_dance | танцующие черепахи вращаются попарно в противоположных направлениях | сложные фигуры, клонирование размера, наклон, get_shapepoly, обновление |
sorting_animate | визуальная демонстрация различных методов сортировки | простая выравнивание, случайность |
tree | дерево (графическое) с обходом в ширину (с использованием генераторов) |
|
two_canvases | простой дизайн | черепахи на двух холстах |
wikipedia | узор из статьи Википедии о графике черепахи |
|
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
- Были добавлены методы
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(). Эти методы отображают всплывающие диалоговые окна для ввода, возвращая строки и числа соответственно. - В каталог
Lib/turtledemoбыли добавлены два скрипта примеровtdemo_nim.pyиtdemo_round_dance.py.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/turtle.html