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) определяет объекты черепахи, которые рисуют наTurtleScreen. Его конструктор требует холст, ScrolledCanvas или TurtleScreen в качестве аргумента, чтобы объекты RawTurtle знали, где рисовать.Производным от RawTurtle является подкласс
Turtle(псевдоним:Pen), который рисует на экземпляреScreen, который автоматически создается, если он ещё не существует.Все методы RawTurtle/Turtle также существуют в виде функций, то есть как часть процедурного интерфейса.
Процедурный интерфейс предоставляет функции, которые производятся из методов классов Screen и Turtle. Они имеют те же имена, что и соответствующие методы. Объект экрана автоматически создается всякий раз, когда вызывается функция, производная от метода Screen. Объект черепахи (без имени) автоматически создается всякий раз, когда вызывается любая из функций, производных от метода черепахи.
Чтобы использовать несколько черепах на одном экране, нужно использовать объектно-ориентированный интерфейс.
Примечание
В последующей документации список аргументов для функций приведен. У методов, конечно, есть дополнительный первый аргумент self, который здесь опущен.
Обзор доступных методов черепахи и экрана
Методы черепахи
- Движение черепахи
-
- Перемещение и рисование
- Определение состояния черепахи
- Установка и измерение
- Управление пером
-
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительное управление рисованием
- Состояние черепахи
-
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
Методы TurtleScreen/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) # 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 (“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 не указан, возвращает имя текущей формы. Форма с name должна существовать в словаре форм TurtleScreen. Изначально есть следующие многоугольные формы: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”. Чтобы узнать, как работать с формами, см. метод экрана
register_shape().>>> turtle.shape() 'classic' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle'
-
turtle.resizemode(rmode=None) -
- Параметры
-
rmode – одна из строк “auto”, “user”, “noresize”
Устанавливает resizemode на одно из значений: “auto”, “user”, “noresize”. Если rmode не указан, возвращает текущий resizemode. Разные режимы resizemode оказывают следующие эффекты:
- “auto”: адаптирует вид черепахи, соответствующий значению pensize.
- “user”: адаптирует вид черепахи в соответствии со значениями stretchfactor и outlinewidth (outline), которые устанавливаются с помощью
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 – число (необязательно)
Устанавливает или возвращает текущий 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 задан, поворачивает форму черепахи для указания направления, заданного 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, 22. Определитель 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
Установить или отключить undobuffer. Если size — целое число, устанавливается пустой undobuffer заданного размера. size задаёт максимальное число действий черепахи, которые можно отменить с помощью метода/функции
undo(). Если size —None, undobuffer отключается.>>> turtle.setundobuffer(42)
-
turtle.undobufferentries() -
Возвращает количество записей в undobuffer.
>>> 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 с событием нажатия клавиши, если задана key, или с любым событием нажатия клавиши, если key не задана. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. метод
listen().)>>> def f(): ... fd(50) ... >>> screen.onkey(f, "Up") >>> screen.listen()
-
turtle.onclick(fun, btn=1, add=None) -
turtle.onscreenclick(fun, btn=1, add=None) -
- Параметры
-
- fun – функция с двумя аргументами, которая будет вызвана с координатами нажатой точки на холсте
- btn – номер кнопки мыши, по умолчанию 1 (левая кнопка)
-
add –
TrueилиFalse– еслиTrue, новая привязка будет добавлена, иначе она заменит предыдущую привязку
Связывает fun с событиями щелчка мыши на данном экране. Если fun равно
None, существующие привязки удаляются.Пример для экземпляра TurtleScreen с именем
screenи экземпляра Turtle с именем turtle:>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) # remove event binding again
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
onscreenclick. Глобальная функцияonclick— это другая функция, полученная из метода Turtleonclick.
-
turtle.ontimer(fun, t=0) -
- Параметры
-
- fun – функция без аргументов
- t – число ≥ 0
Устанавливает таймер, который вызывает fun через t миллисекунд.
>>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) >>> f() ### makes the turtle march around >>> running = False
-
turtle.mainloop() -
turtle.done() -
Запускает цикл обработки событий — вызывая функцию mainloop 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 — текст, описывающий, какую числовую информацию необходимо ввести. default: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимальное значение для ввода. Введенное число должно быть в диапазоне minval .. maxval, если эти значения указаны. В противном случае выдается подсказка, и диалог остается открытым для исправления. Возвращает введенное число. Если диалог отменен, возвращает
None.>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)
Настройки и специальные методы
-
turtle.mode(mode=None) -
- Параметры
-
mode – одна из строк “standard”, “logo” или “world”
Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если mode не указан, возвращает текущий режим.
Режим “standard” совместим со старой
turtle. Режим “logo” совместим с большинством графических систем Logo. Режим “world” использует пользовательские «мировые координаты». Внимание: в этом режиме углы искажаются, еслиx/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() -
Возвращает холст этого 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 подробно документированы с помощью строк документации. Их можно использовать как онлайн-справку через средства справки 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.)
Как настроить экран и черепах
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля черепахи, чтобы сохранить максимальную совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает особенности этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg, который будет считываться во время импорта и изменять конфигурацию в соответствии с его настройками.
Встроенная конфигурация соответствовала бы следующему turtle.cfg:
width = 0.5 height = 0.75 leftright = None topbottom = None canvwidth = 400 canvheight = 300 mode = standard colormode = 1.0 delay = 10 undobuffersize = 1000 shape = classic pencolor = black fillcolor = black resizemode = noresize visible = True language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = False
Краткое объяснение выбранных записей:
- Первые четыре строки соответствуют аргументам метода
Screen.setup(). - Строки 5 и 6 соответствуют аргументам метода
Screen.screensize(). -
shape может быть любой из встроенных форм, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте
help(shape). - Если вы хотите использовать без цвета заливки (т.е. сделать черепаху прозрачной), вы должны написать
fillcolor = ""(но все непустые строки не должны иметь кавычек в файле cfg). - Если вы хотите отразить состояние черепахи, вы должны использовать
resizemode = auto. - Если вы установите, например,
language = italian, словарь строк документацииturtle_docstringdict_italian.pyбудет загружен во время импорта (если он присутствует на пути импорта, например, в той же директории, что иturtle. - Записи exampleturtle и examplescreen определяют имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.
-
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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/turtle.html