turtle — Черепашья графика

Исходный код: Lib/turtle.py


Введение

Черепашья графика является популярным способом введения в программирование для детей. Был частью оригинального языка программирования Logo, разработанного Уолли Фейрцейгом (Wally Feurzeig), Сеймуром Папертом (Seymour Papert) и Синтией Соломон (Cynthia Solomon) в 1967 году.

Представьте себе роботизированную черепаху, начинающуюся с (0, 0) в плоскости x-y. После import turtle дайте ей команду turtle.forward(15) и она переместится (на экране!) на 15 пикселей в направлении, к которому он обращен, рисуя линию по мере движения. Передайте ей команду turtle.right(25), и он повернется на месте на 25 градусов по часовой стрелке.

Комбинируя эти и подобные команды, можно легко рисовать сложные формы и изображения.

Модуль turtle представляет собой расширенное повторное внедрение одноименного модуля из стандартного дистрибутива Python до версии Python 2.5.

Он старается сохранить достоинства старого модуля turtle и быть (почти) 100% совместимым с ним. Это в первую очередь означает возможность программисту обучения использовать все команды, классы и методы в интерактивном режиме при использовании модуля изнутри IDLE запуска с опцией -n.

Модуль turtle предоставляет примитивы черепашей графики, как объектно- ориентированными, так и процедурно-ориентированными способами. Поскольку он использует tkinter для базовой графики, ему необходима версия Python, установленная с поддержкой Tk.

Объектно-ориентированный интерфейс использует по существу два+два класса:

  1. Класс TurtleScreen определяет графические окна как игровую площадку для черепашьего черчения. Его конструктору требуется tkinter.Canvas или ScrolledCanvas в качестве аргумента. Его следует используемый при используемый turtle в рамках какого-либо приложения.

    Функция Screen() возвращает одиночный объект подкласса TurtleScreen. Эта функция должна быть используемый, когда turtle используемый как автономный инструмент для работы с графикой. В качестве одиночного объекта наследование от его класса невозможно.

    Все методы TurtleScreen/Screen также существуют как функции, т.е. как часть интерфейса, ориентированного на процедуры.

  2. RawTurtle (алиас: RawPen) определяет объекты черепахи, которые рисуются на TurtleScreen. Его конструктору требуется в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, поэтому объекты RawTurtle знают, где рисовать.

    Полученный из RawTurtle подкласс Turtle (алиас: Pen), который привлекает Screen сущность, который уже автоматически создан, если не существующий.

    Все методы RawTurtle/Turtle также существуют как функции, т.е. часть интерфейса, ориентированного на процедуры.

Процедурный интерфейс предоставляет функции, производные от методов классов Screen и Turtle. Они имеют те же имена, что и соответствующие методы. Объект экрана создается автоматически при каждом вызове функции, производной от метода Screen. Объект черепахи (без имени) автоматически создается при каждом вызове любой функции, производной от метода черепахи.

Для использования нескольких черепах на экране необходимо использовать объектно- ориентированный интерфейс.

Примечание

В следующей документации приведен список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент self который здесь пропущен.

Обзор доступных методов Turtle и Screen

Методы Turtle

Движение черепахи
Двигаться и рисовать
Сказать состояние черепахе
Настройка и измерение
Управление Pen
Состояние рисования
Управление цветом
Заполнение
Больше контроля рисования
Состояние черепахи
Видимость
Внешний вид
Использование событий
Специальные методы Turtle

Методы TurtleScreen/Screen

Управление окном
Управление анимацией
Использование событий экрана
Настройки и специальные методы
Методы ввода
Методы, специфичные для Screen

Методы RawTurtle/Turtle и соответствующие функции

Большинство примеров в этом разделе относятся к сущности черепахи под названием turtle.

Движение черепахи

turtle.forward(distance)
turtle.fd(distance)
Параметры:distance – число (целое число или число с плавающей запятой)

Двигать черепаху вперёд на указанный distance, в сторону направляется черепахи.

turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
Параметры:distance – номер

Двигать черепаху назад на distance, напротив направления, в котором черепаха направляется. Не меняя курс черепахи.

turtle.right(angle)
turtle.rt(angle)
Параметры:angle – число (целое число или число с плавающей запятой)

Повернуть черепаху направо на angle единиц. (Единицы измерения по умолчанию являются градусами, но могут быть установлены с помощью функций degrees() и radians()). Ориентация угла зависит от режима черепахи, см. mode().

turtle.left(angle)
turtle.lt(angle)
Параметры:angle – число (целое число или число с плавающей запятой)

Повернуть черепаху налево на angle единицы. (Единицы измерения по умолчанию являются градусами, но могут быть установлены с помощью функций degrees() и radians()). Ориентация угла зависит от режима черепахи, см. mode().

turtle.goto(x, y=None)
turtle.setpos(x, y=None)
turtle.setposition(x, y=None)
Параметры:
  • x – число или пара/вектор чисел
  • y – число или None

Если y равно None, x должна быть пара координат или Vec2D (например, как возвращенный pos()).

Переместить черепаху в абсолютное положение. Если перо расположено вниз, провести линию. Не меняя ориентацию черепахи.

turtle.setx(x)
Параметры:x – число (целое число или число с плавающей запятой)

Установить первую координату черепахи на x, а вторую - без изменений.

turtle.sety(y)
Параметры:y – число (целое число или число с плавающей запятой)

Задать для второй координаты черепахи значение y, оставляя первую координату неизменной.

turtle.setheading(to_angle)
turtle.seth(to_angle)
Параметры:to_angle – число (целое число или число с плавающей запятой)

Установить ориентацию черепахи на to_angle. Вот некоторые общие направления в градусах:

стандартный режим logo режим
0 - восток 0 - север
90 - север 90 - восток
180 - запад 180 - юг
270 - юг 270 - запад
turtle.home()

Переместить черепаху в начало координат (0,0) и установить ее курс на начало ориентации (что зависит от режима, см. mode()).

turtle.circle(radius, extent=None, steps=None)
Параметры:
  • radius – число
  • extent – число (или None)
  • steps – целое число (или None)

Нарисовать круг с заданным radius. Центр radius единиц слева от черепахи; extent - угол - определяет, какая часть окружности нарисована. Если extent не дано, нарисовать всю окружность. Если extent не является полной окружностью, одной конечной точкой дуги является текущее положение пера. Нарисовать дугу против часовой стрелки, если radius положительная, в противном случае - по часовой стрелке. Наконец, направление черепахи изменяется на количество extent.

Поскольку окружность аппроксимируется вписанным правильным многоугольником, steps определяет количество шагов для использования. Если он не указан, он будет рассчитан автоматически. Может быть используемый для построения правильных многоугольников.

turtle.dot(size=None, *color)
turtle.dot(size=None, *color)
Параметры:
  • size – целое число >= 1 (если задано)
  • color – цветовая строка или цифровой цветовой кортеж

Нарисовать круглую точку диаметром size, используя color. Если size не дано, максимум pensize+4 и 2*pensize равен используему.

turtle.stamp()

Отметить копию формы черепахи на холсте в текущем положении черепахи. Возвращает stamp_id для этого штампа, который можно используемый для удаления путем вызова clearstamp(stamp_id).

turtle.clearstamp(stampid)
Параметры:stampid – целое число, должно быть возвращено значением предыдущего вызова stamp()

Удалить штамп с заданным stampid.

turtle.clearstamps(n=None)
Параметры:n – целое число (или None)

Удалить все или первый/последний n черепаших штампов. Если n None, удалите все штампы, если n > 0 удалите первые штампы n, а если n < 0 удалите последние штампы n.

>>> for i in range(8):
...     turtle.stamp(); turtle.fd(30)
13
14
15
16
17
18
19
20
>>> turtle.clearstamps(2)
>>> turtle.clearstamps(-2)
>>> turtle.clearstamps()
turtle.undo()

Отменить (повторно) последнее действие (действия) черепахи. Количество доступных действий отмены определяется размером undobuffer.

turtle.speed(speed=None)
Параметры:speed – целое число в диапазоне 0..10 или speedstring (см. ниже)

Установить скорость черепахи на целое число значение в диапазоне 0..10. Если аргумент не задан, возвращает текущую скорость.

Если на входе число больше 10 или меньше 0.5, скорость устанавливается равной 0. Строки скорости отображаются в значения скорости следующим образом:

  • «fastest»: 0
  • «fast»: 10
  • «normal»: 6
  • «slow»: 3
  • «slowest»: 1

Скорости от 1 до 10 ускоряют анимацию рисования линий и поворота черепах.

Внимание: speed = 0 означает, что анимация не используется. Вперед/назад заставляет черепаху прыгать и также влево/вправо заставить черепаху повернуться мгновенно.

Скажи состояние черепахи

turtle.position()
turtle.pos()

Возвращает текущее местоположение черепахи (x, y) (как вектор Vec2D).

turtle.towards(x, y=None)
Параметры:
  • x – число или пара/вектор чисел или черепашья сущность
  • y – число, если x является числом, иначе None

Возвращает угол между линией от положения черепахи до положения, заданного (x, y), вектором или другой черепахой. Это зависит от начальной ориентации черепахи, которая зависит от режима - «standard»/»world» или «logo»).

turtle.xcor()

Возвращает координату x черепахи.

turtle.ycor()

Возвращает координату y черепахи.

turtle.heading()

Возвращает текущий курс черепахи (значение зависит от режима черепахи, см. mode()).

turtle.distance(x, y=None)
Параметры:
  • x – число или пара/вектор чисел или черепашья сущность
  • y – число, если x является числом, иначе None

Возвращает расстояние от черепахи до (x, y), заданного вектора или данной другой черепахи в шаговых единицах черепахи.

Параметры измерения

turtle.degrees(fullcircle=360.0)
Параметры:fullcircle – число

Установить единицы измерения угла, т.е. Задать число «градусов» для полного круга. значение по умолчанию - 360 градусов.

turtle.radians()

Установить единицы измерения угла в радианы. Эквивалентно degrees(2*math.pi).

Контроль за ручкой

Рисунок состояние

turtle.pendown()
turtle.pd()
turtle.down()

Поместить ручку вниз – рисование при движении.

turtle.penup()
turtle.pu()
turtle.up()

Поместить ручку вверх - никакого рисунка при движении.

turtle.pensize(width=None)
turtle.width(width=None)
Параметры:width – положительное число

Установить толщину линии на width или возвращает. Если для параметра resizemode установлено значение «auto», а форма трещины является многоугольником, этот многоугольник рисуется с одинаковой толщиной линии. Если аргумент не приводится, нынешняя пенсионерка возвращенный.

turtle.pen(pen=None, **pendict)
Параметры:
  • pen – словарь с некоторыми или всеми перечисленными ниже ключами
  • pendict – один или несколько ключевых аргументов с приведенными ниже ключей в качестве ключевых слов

Возвращает или задать атрибуты пера в «pen-dictionary» со следующими парами ключ/значение:

  • «shown»: True/False
  • «pendown»: True/False
  • «pencolor»: цветная строка или цветовой кортеж
  • «fillcolor»: цветная строка или цветовой кортеж
  • «pensize»: положительное число
  • «speed»: число в диапазоне 0..10
  • «resizemode»: «auto» или «user» или «noresize»
  • «stretchfactor»: (положительное число, положительное число)
  • «outline»: положительное число
  • «tilt»: число

Этот словарь можно используемый в качестве аргумента для последующего вызова pen() для восстановления прежнего pen-состояние. Кроме того, один или более из этих атрибуты могут быть обеспечены в качестве ключевой-arguments. Это можно используемый для установки нескольких атрибуты пера в одном инструкция.

turtle.isdown()

Возвращает True если ручка вниз, False если она вверху.

Цветной контроль

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.

Если фигурка представляет собой многоугольник, контур этого многоугольника рисуется с помощью только что заданной ручки.

turtle.fillcolor(*args)

Возвращает или задать цвет fillcolor.

Допустимы четыре формата ввода:

fillcolor()
Возвращает текущий цвет заливки как строка цветовой спецификации, возможно, в формате кортежа (см. пример). Может быть используемый в качестве ввода для другого вызова color/pencolor/fillcolor.
fillcolor(colorstring)
Задать для заливки значение colorstring, которое является строка цветовой спецификации Tk, например "red", "yellow" или "#33cc8c".
fillcolor((r, g, b))
Установить цвет fillcolor в RGB-цвет кортежа r, g и b. Каждый из r, g и b должен находиться в диапазоне 0..colormode, где colormode - 1.0 или 255 (см. colormode()).
fillcolor(r, g, b)
Установить цвет fillcolor в RGB-цвет, представленный r, g и b. Каждый из r, g и b должен находиться в диапазоне 0..colormode.

Если форма turtleshape представляет собой многоугольник, внутренняя часть этого многоугольника рисуется с помощью вновь заданного цвета fillcolor.

turtle.color(*args)

Возвращает или установить ручку и цвет заливки.

Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:

color()
Возвращает ток pencolor и ток fillcolor как пара цветной спецификации строки или кортежей как возвращенный pencolor() и fillcolor().
color(colorstring), color((r,g,b)), color(r,g,b)
Входы, как в pencolor(), установить оба, fillcolor и карандаш, к заданному значение.
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))
Эквивалентно pencolor(colorstring1) и fillcolor(colorstring2) и аналогично, если другой входной формат является используемый.

Если turtleshape представляет собой многоугольник, контур и внутренняя часть этого многоугольника вычерчиваются только что заданными цветами.

См. также: colormode() метода экрана.

Заполнение

turtle.filling()

Возвращает fillstate (True при заполнении, False остальное).

turtle.begin_fill()

Вызываться непосредственно перед рисованием фигуры, подлежащей заполнению.

turtle.end_fill()

Заполнить фигуру, нарисованную после последнего вызова begin_fill().

Заполняются ли области перекрытия для самопересекающихся многоугольников или нескольких форм, зависит от графики операционной системы, типа перекрытия и количества перекрытий. Например, звезда черепахи может быть либо желтой, либо иметь некоторые белые области.

Больше управления чертежом

turtle.reset()

Удалить чертежи черепахи с экрана, повторно центрируйте черепаху и установить значения переменных по умолчанию.

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.showturtle()
turtle.st()

Сделать черепаху видимой.

turtle.isvisible()

Возвращает True если черепаха показана, False если она скрыта.

>>> turtle.hideturtle()
>>> turtle.isvisible()
False
>>> turtle.showturtle()
>>> turtle.isvisible()
True

Внешность

turtle.shape(name=None)
Параметры:name – строка, которая является допустимым shapename

Задать форму черепахи с заданным name или, если имя не указано, возвращает имя текущей формы. Фигура с name должна существовать в словаре фигур TurtleScreen. Первоначально существуют следующие формы многоугольников: «стрела», «черепаха», «круг», «квадрат», «треугольник», «классика». Сведения о том, как обращаться с фигурами, см. в разделе register_shape() метода экрана.

turtle.resizemode(rmode=None)
Параметры:rmode – одна из строк «auto», «user», «noresize»

Установить для resizemode один из значения: «auto», «user», «noresize». Если rmode не задан, возвращает текущий resizemode. Различные resizemodes имеют следующие эффекты:

  • «auto»: адаптирует внешний вид черепахи, соответствующий значение pensize.
  • «user»: адаптирует внешний вид черепахи по значения растягивающего фактора и по ширине (контуру), которые задаются shapesize().
  • «noresize»: никакой адаптации внешнего вида черепахи не происходит.

resizemode («пользователь») вызывается shapesize() при используемый с аргументами.

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 и/или схема ручки. Установить для resizemode значение «user». Если и только если для resizemode установлено значение «user», черепаха будет отображаться растянутой согласно своим растягивающим факторам: stretch_wid является растягивающим фактором, перпендикулярным его ориентации, stretch_len является растягивающим фактором в направлении его ориентации, outline определяет ширину контура фигур.

turtle.shearfactor(shear=None)
Параметры:shear – number (optional)

Установить или возвращает текущий коэффициент сдвига. Срезать форму трещины согласно заданному сдвигу среза, который является касательной угла среза. не меняя курс черепахи (направление движения). Если сдвиг не дан: возвращает текущий шеффактор, т. е. касательная угла сдвига, по которой срезаются линии, параллельные курсу черепахи.

turtle.tilt(angle)
Параметры:angle – номер

Повернуть turtleshape на angle от текущего угла наклона, но не изменит курс черепахи (направление движения).

turtle.settiltangle(angle)
Параметры:angle – номер

Поворот с к точке в направлении, задаваемом angle, независимо от его текущего угла наклона. Не изменит курс черепахи (направление движения).

Не рекомендуется, начиная с версии 3.1.

turtle.tiltangle(angle=None)
Параметры:angle – номер (необязательно)

Установка или возвращает текущего угла наклона. Если угол задан, поверните форму турника в направлении, заданном углом, независимо от его текущего угла наклона. не меняет курс черепахи (направление движения). Если угол не дан: возвращает текущий угол наклона, т. е. угол между ориентацией черепахи и курсом черепахи (её направлением движения).

turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)
Параметры:
  • t11 – номер (необязательно)
  • t12 – номер (необязательно)
  • t21 – номер (необязательно)
  • t12 – номер (необязательно)

Установка или возвращает текущей матрицы преобразования формы черепахи.

Если ни один из элементов матрицы не задан, возвращает матрицу преобразования как кортеж из 4 элементов. В противном случае Задать заданные элементы и преобразуйте форму трещины в соответствии с матрицей, состоящей из первого ряда t11, t12 и второго ряда t21, 22. Определитель t11 * t22 - t12 * t21 не должен быть нулевым, в противном случае возникает ошибка. Измените растягивающий фактор, коэффициент сдвига и угол наклона в соответствии с заданной матрицей.

turtle.get_shapepoly()

Возвращает текущего многоугольника формы в виде кортежа пар координат. Это можно используемый для определения новой формы или компонентов составной формы.

Используя события

turtle.onclick(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами выбранной точки на холсте
  • btn – номер кнопки мыши, по умолчанию - 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

Привязать fun к событиям щелчка мыши на этой черепахе. Если fun None, существующие привязки удаляются. Пример для анонимной черепахи, т.е. процедурный способ:

turtle.onrelease(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами выбранной точки на холсте
  • btn – номер кнопки мыши, по умолчанию - 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

Привязать fun к событиям выхода кнопки мыши на этой черепахе. Если fun None, существующие привязки удаляются.

turtle.ondrag(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами выбранной точки на холсте
  • btn – номер кнопки мыши, по умолчанию - 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

Связать fun с событиями перемещения мыши на этой черепахе. Если fun None, существующие привязки удаляются.

Замечание: каждой последовательности событий перемещения мыши на черепахе предшествует событие щелчка мыши на этой черепахе.

Впоследствии щелчок и перетаскивание черепахи переместит ее по экрану, тем самым создавая ручную отрисовку (если ручка вниз).

Специальные методы черепахи

turtle.begin_poly()

Начать запись вершин многоугольника. Текущее положение черепахи - первая вершина многоугольника.

turtle.end_poly()

Остановить запись вершин многоугольника. Текущее положение черепахи является последней вершиной многоугольника. Это будет связано с первой вершиной.

turtle.get_poly()

Возвращает последний записанный многоугольник.

turtle.clone()

Создать и возвращает клон черепахи с одинаковым положением, заголовком и свойствами черепахи.

turtle.getturtle()
turtle.getpen()

Возвращает сам объект черепахи. Только разумное использование: как функция для возвращает «анонимной черепахи»:

turtle.getscreen()

Возвращает TurtleScreen объект, на который рисуется черепахой. Затем для этого объекта можно вызвать методы TurtleScreen.

turtle.setundobuffer(size)
Параметры:size – целое число или None

Установка или отключение undobuffer. Если size является целым числом, устанавливается пустой undobuffer заданного размера. size дает максимальное количество действий черепах, которые могут быть отменены методом/функцией undo(). Если size является None, undobuffer отключается.

turtle.undobufferentries()

Возвращает количество записей в undobuffer.

Составные формы

Чтобы использовать составные формы черепах, состоящие из нескольких многоугольников разного цвета, необходимо явно использовать класс helper Shape как описано ниже:

  1. Создать пустой объект Shape типа «составной».

  2. Добавить к этому объекту необходимое количество компонентов с помощью метода addcomponent().

    Например:

  3. Теперь добавьте фигуру в список фигур экрана и используйте ее:

Примечание

Класс Shape используемый внутренне методом register_shape() различными способами. Программист приложения должен иметь дело с классом Shape только при использовании составных фигур, как показано выше!

Методы TurtleScreen/Screen и соответствующие функции

Большинство примеров в этом разделе относятся к сущность TurtleScreen под названием screen.

Контроль за окном

turtle.bgcolor(*args)
Параметры:args – цвет-строка или три числа в диапазоне 0..colormode или 3-кортеж таких чисел

Установить или возвращает цвет фона экрана TurtleScreen.

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 правого верхнего угла холста

Настройте пользовательскую систему координат и при необходимости переключитесь в режим «world». При этом выполняется screen.reset(). Если режим «world» уже активен, все чертежи перерисовываются по новым координатам.

ВНИМАНИЕ: в пользовательских системах координат углы могут показаться искаженными.

Контроль за анимацией

turtle.delay(delay=None)
Параметры:delay – положительное целое число

Установка или возвращение delay чертежа в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) чем дольше задержка чертежа, тем медленнее анимация.

Дополнительный аргумент:

turtle.tracer(n=None, delay=None)
Параметры:
  • n – неотрицательное целое число
  • delay – неотрицательное целое число

Включение/выключение анимации черепах и установка задержки обновления чертежей. Если n дано, действительно выполняется только каждое n-ое регулярное обновление экрана. (Может быть используемый для ускорения рисования сложной графики.) при вызове без аргументов возвращает текущий сохраненный значение n. Второй аргумент устанавливает значение задержки (см. delay()).

turtle.update()

Выполнить обновление TurtleScreen. Будет используемый, когда трассировщик выключен.

См. также speed() метода RawTurtle/Turtle.

Использование событий экрана

turtle.listen(xdummy=None, ydummy=None)

Установить фокус на TurtleScreen (для сбора ключевых событий). Пустые аргументы предоставляются для передачи listen() методу onclick.

turtle.onkey(fun, key)
turtle.onkeyrelease(fun, key)
Параметры:
  • fun – функция без аргументов или None
  • key – строка: ключ (например, «a») или ключевой символ (например, «пробел»)

Привязать fun к событию деблокирования ключа. Если fun None, привязки событий удаляются. Замечание: чтобы иметь возможность регистрировать ключевые события, TurtleScreen должен иметь фокус. (См. метод listen().)

turtle.onkeypress(fun, key=None)
Параметры:
  • fun – функция без аргументов или None
  • key – строка: ключ (например, «a») или ключевой символ (например, «пробел»)

Привязать fun к событию нажатия клавиши, если клавиша задана, или к любому событию нажатия клавиши, если клавиша не задана. Замечание: чтобы иметь возможность регистрировать ключевые события, TurtleScreen должен иметь фокус. (См. метод listen().)

turtle.onclick(fun, btn=1, add=None)
turtle.onscreenclick(fun, btn=1, add=None)
Параметры:
  • fun – функция с двумя аргументами, которая будет вызвана с координатами выбранной точки на холсте
  • btn – номер кнопки мыши, по умолчанию - 1 (левая кнопка мыши)
  • addTrue или False – если True, то будет добавлен новый биндинг, в противном случае он заменит прежний биндинг

Привязать fun к событиям щелчка мыши на этом экране. Если fun None, существующие привязки удаляются.

Пример для TurtleScreen сущность по имени screen и черепаха сущность, названный turtle:

Примечание

Этот метод TurtleScreen доступен как глобальная функция только под именем onscreenclick. Глобальная функция onclick является другой функцией, производной от метода черепахи onclick.

turtle.ontimer(fun, t=0)
Параметры:
  • fun – функция без аргументов
  • t – число >= 0

Установить таймер, вызывающий fun через t миллисекунд.

turtle.mainloop()
turtle.done()

Запуск событийного цикла - вызов функции основного контура Tkinter. Должно быть, последний инструкция в графической программе черепах. Не должен использоваться, если сценарий запущен из IDLE в режиме -n (Нет подпроцессов) - для интерактивного использования графики черепах.:

>>> screen.mainloop()

Входные методы

turtle.textinput(title, prompt)
Параметры:
  • title – строка
  • prompt – строка

Открыть диалоговое окно для ввода строки. Заголовок параметра - это заголовок диалогового окна, подсказка - это текст, в основном описывающий вводимую информацию. Возвращает входной сигнал строка. Если диалоговое окно отменено, возвращает None:

>>> screen.textinput("NIM", "Name of first player:")
turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
Параметры:
  • title – строка
  • prompt – строка
  • default – число (дополнительное)
  • minval – число (дополнительное)
  • maxval – число (дополнительное)

Открыть диалоговое окно для ввода числа. title - заголовок диалогового окна, prompt - текст, в основном описывающий, какую числовую информацию ввести. По умолчанию: значение по умолчанию, minval: minimum значение для ввода, 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» совместим с большинством графики черепах логотипа. Режим «world» использует определяемые пользователем «world координаты». Внимание: в этом режиме углы оказываются искаженными, если x/y единичное отношение не равно 1.

Режим Начальный заголовок черепахи положительные углы
«standard» направо (восток) counterclockwise
«logo» вверх (север) clockwise
turtle.colormode(cmode=None)
Параметры:cmode – один из значений 1.0 или 255

Возвращает цветовой код или установить для него значение 1.0 или 255. В дальнейшем r, g, b значения цветовых троек должны находиться в диапазоне 0..cmode.

turtle.getcanvas()

Возвращает холст этого экрана TurtleScreen. Полезно для инсайдеров, которые знают, что делать с полотном Tkinter.

turtle.getshapes()

Возвращает список имен всех доступных в настоящее время фигур черепах.

turtle.register_shape(name, shape=None)
turtle.addshape(name, shape=None)

Существует три различных способа вызова этой функции:

  1. name - это имя gif-файла, а shape None: установить соответствующую фигуру образа.:

    >>> screen.register_shape("turtle.gif")
    

    Примечание

    Фигуры изображения не вращаются при повороте черепахи, поэтому они не отображают заголовок черепахи!

  2. name - произвольный строка, а shape - кортеж пар координат: установить соответствующую форму многоугольника.

  3. name - произвольная строка, а форма - (составная) Shape объект: установить соответствующую составную форму.

Добавить форму черепахи в список фигур TurtleScreen. Только зарегистрированные таким образом фигуры можно используемый путем ввода командной shape(shapename).

turtle.turtles()

Возвращает список черепах на экране.

turtle.window_height()

Возвращает высоту окна черепахи.

>>> screen.window_height()
480
turtle.window_width()

Возвращает ширину окна черепахи.:

>>> screen.window_width()
640

Методы, специфичные для Screen, не наследуются от TurtleScreen

turtle.bye()

Закрыть окно с туртлеграфикой.

turtle.exitonclick()

Привязать метод bye() к щелчкам мыши на экране.

Если в словаре конфигурации значение False «using_IDLE» (по умолчанию значение), также введите mainloop. Замечание: если IDLE с выключателем -n (без подпроцессов) является используемый, этот значение должен быть установлен в True в turtle.cfg. В этом случае собственный основной контур IDLE также активен для клиентского сценария.

turtle.setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])

Задать размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены с помощью файла turtle.cfg.

Параметры:
  • width – если целое число, размер в пикселях, если float, доля экрана; по умолчанию - 50% экрана
  • height – если целое число, высота в пикселях, если float, доля экрана; по умолчанию - 75% экрана
  • startx – если положительный, начальная позиция в пикселях от левого края экрана, если отрицательный от правого края, если None, центрировать окно по горизонтали
  • starty – если положительная, начальная позиция в пикселях от верхнего края экрана, если отрицательная от нижнего края, если None, центрировать окно по вертикали
turtle.title(titlestring)
Параметры:titlestring – строка, которая показана в строке заголовка черепахи графического окна

Установить заголовок окна черепахи на titlestring.

Общественные классы

class turtle.RawTurtle(canvas)
class turtle.RawPen(canvas)
Параметры:canvastkinter.Canvas, ScrolledCanvas или TurtleScreen

Создать черепаху. У черепахи есть все методы, описанные выше как «методы черепахи/RawTurtle».

class turtle.Turtle

Подкласс RawTurtle, имеет тот же интерфейс, но использует объект Screen по умолчанию, созданный автоматически при первой необходимости.

class turtle.TurtleScreen(cv)
Параметры:cv – a tkinter.Canvas

Предоставляет методы, ориентированные на экран, такие как setbg() и т.д., которые описаны выше.

class turtle.Screen

Подкласс TurtleScreen с four methods added.

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 (если он задан)

Пример:

См. Составные формы.

class turtle.Vec2D(x, y)

Двумерный векторный класс, используемый как вспомогательный класс для реализации графики черепах. Может быть полезен и для графических программ черепах. Производный от кортежа, поэтому вектор - кортеж!

Обеспечивает (для a, векторов b, числа k):

  • a + b векторное дополнение
  • a - b векторное вычитание
  • a * b скалярное произведение
  • k * a и a * k умножение со скаляром
  • abs(a) абсолютное значение а
  • a.rotate(angle) вращение

Справка и настройка

Как пользоваться помощью

Публичные методы классов Screen и Turtle подробно документируются с помощью докстрингов. Таким образом, они могут быть используемый как онлайн-справки через Python справочные средства:

  • При использовании IDLE в подсказках отображаются подписи и первые строки докстринги типизированных вызовов функций/методов.

  • Вызов help() по методам или функциям отображает докстринги:

    >>> help(Screen.bgcolor)
    Help on method bgcolor in module turtle:
    
    bgcolor(self, *args) unbound turtle.Screen method
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
    
          >>> screen.bgcolor("orange")
          >>> screen.bgcolor()
          "orange"
          >>> screen.bgcolor(0.5,0,0.5)
          >>> screen.bgcolor()
          "#800080"
    
    >>> help(Turtle.penup)
    Help on method penup in module turtle:
    
    penup(self) unbound turtle.Turtle method
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        >>> turtle.penup()
    
  • Функции, докстринги из методов, имеют измененную форму:

    >>> help(bgcolor)
    Help on function bgcolor in module turtle:
    
    bgcolor(*args)
        Set or return backgroundcolor of the TurtleScreen.
    
        Arguments (if given): a color string or three numbers
        in the range 0..colormode or a 3-tuple of such numbers.
    
        Example::
    
          >>> bgcolor("orange")
          >>> bgcolor()
          "orange"
          >>> bgcolor(0.5,0,0.5)
          >>> bgcolor()
          "#800080"
    
    >>> help(penup)
    Help on function penup in module turtle:
    
    penup()
        Pull the pen up -- no drawing when moving.
    
        Aliases: penup | pu | up
    
        No argument
    
        Example:
        >>> penup()
    

Эти измененные докстринги создаются автоматически вместе с определениями функций, производными от методов во время импорта.

Перевод докстринги на различные языки

Существует утилита для создания словаря, ключами которого являются названия методов и значения которого являются докстринги публичных методов классов Screen и Turtle.

turtle.write_docstringdict(filename="turtle_docstringdict")
Параметры:filename – строка, используемый как имя файла

Создание и запись докстрингов-словарь в сценарий Python с заданным именем файла. Эта функция должна вызываться явно (она не используемый классами графики черепах). Словарь докстринг будет записан в filename.py сценария Python. Он призван служить образцом для перевода докстринги на различные языки.

Если вы (или ваши студенты) хотите использовать turtle с помощью онлайн- справки на родном языке, вы должны перевести докстринги и сохранить полученный файл, например, как turtle_docstringdict_german.py.

Если в файле turtle.cfg имеется соответствующая запись, этот словарь будет прочитан во время импорта и заменит исходный английский докстринги.

На момент написания этой статьи существует докстринг словаря на немецком и итальянском языках. (Запросы пожалуйста присылайте на glingl@aon.at.)

Настройка экрана и черепах

Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить наилучшую совместимость с ним.

Если вы хотите использовать другую конфигурацию, которая лучше отражает особенности этого модуля или которая лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg который будет прочитан во время импорта и изменить конфигурацию в соответствии с его настройками.

Встроенная конфигурация будет соответствовать следующей конфигурации turtle.cfg:

width = 0.5
height = 0.75
leftright = None
topbottom = None
canvwidth = 400
canvheight = 300
mode = standard
colormode = 1.0
delay = 10
undobuffersize = 1000
shape = classic
pencolor = black
fillcolor = black
resizemode = noresize
visible = True
language = english
exampleturtle = turtle
examplescreen = screen
title = Python Turtle Graphics
using_IDLE = False

Краткое объяснение выбранных записей:

  • Первые четыре строки соответствуют аргументам метода Screen.setup().
  • Строки 5 и 6 соответствуют аргументам метода Screen.screensize().
  • shape может быть любая из встроенных форм, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте help(shape).
  • Если вы не хотите использовать fillcolor (т.е. сделать черепаху прозрачной), вы должны написать fillcolor = "" (но все непустые строки не должны иметь кавычки в cfg-файле).
  • Если вы хотите отразить черепаху ее состояние, вы должны использовать resizemode = auto.
  • Если установлен, например language = italian docstringdict
  • turtle_docstringdict_italian.py будет загружен во время импорта (если он присутствует в пути импорта, например, в том же каталоге, что и turtle.
  • Записи exampleturtle и examplescreen определяют имена этих объектов по мере их появления в докстринги. Преобразование method-докстринги в function-докстринги удалит эти имена из докстринги.
  • using_IDLE: установить это на True, если вы регулярно работаете с IDLE и его -n переключатель («no подпроцессы»). Это не позволит exitonclick() войти в основной контур.

В каталоге, где хранится turtle.cfg, может быть файл turtle, а в текущем рабочем каталоге - дополнительный. Последний переопределяет настройки первого.

Каталог Lib/turtledemo содержит файл turtle.cfg. Вы можете изучить его в качестве примера и увидеть его эффекты при запуске демонстраций (предпочтительно не из демонстрационного просмотра).

turtledemo — Демонстрационные сценарии

Пакет turtledemo включает набор демонстрационных сценариев. Эти сценарии можно запускать и просматривать с помощью предоставленного демонстрационного средства просмотра следующим образом:

python -m turtledemo

Кроме того, можно запускать демонстрационные сценарии по отдельности. Например,:

python -m turtledemo.bytedesign

Каталог пакета turtledemo содержит:

  • Демонстрационный просмотр __main__.py который можно используемый для просмотра исходного кода сценариев и одновременного их запуска.
  • Несколько сценариев, демонстрирующих различные функции модуля turtle. Доступ к примерам можно получить из меню «Примеры». Они также могут выполняться автономно.
  • Файл turtle.cfg, который служит примером записи и использования таких файлов.

Демонстрационные сценарии:

Имя Описание Особенности
bytedesign сложный классический черепаший графический шаблон tracer(), delay, update()
chaos График динамики Верхульста показывает, что компьютерные вычисления могут иногда генерировать результаты против ожиданий здравого смысла мировые координаты
clock аналоговые часы, отображающие время компьютера черепи как ручные часы, ontimer
colormixer эксперимент с r, g, b ondrag()
forest 3 дерева в ширину рандомизация
fractalcurves Кривые Гильберта и Коха рекурсия
lindenmayer этноматематика (индейские коламы) L-система
minimal_hanoi Башни Ханоя Прямоугольные черепахи как ханойские диски (форма, размер формы)
nim играть в классическую игру ним с тремя кучами палок против компьютера. черепахи как нимстики, управляемые событиями (мышь, клавиатура)
paint супер минималистичная программа рисования onclick()
peace элементарный черепаха: внешний вид и анимация
penrose апериодическая мозаика с воздушными змеями и дротиками stamp()
planet_and_moon моделирование гравитационной системы составные фигуры, Vec2D
round_dance танцующие черепахи вращаются попарно в противоположном направлении составные фигуры, клонировать форму, наклонять, get_shapepoly, обновлять
sorting_animate наглядная демонстрация различных способов сортировки простое выравнивание, рандомизация
tree (графическое) первое дерево ширины (с использованием генераторов) clone()
two_canvases простой дизайн черепах на двух полотнах
wikipedia узор из статьи википедии о графике черепах clone(), undo()
yinyang другой элементарный пример circle()

Развлекайтесь!

Изменения после Python 2.6

  • Методы Turtle.tracer(), Turtle.window_width() и Turtle.window_height() были исключены. Методы с этими именами и функциональными возможностями теперь доступны только как методы Screen. Функции, полученные на их основе, остаются доступными. (Фактически уже в Python 2.6 эти методы были просто дубликатами соответствующих методов TurtleScreen/Screen.)
  • Метод Turtle.fill() исключен. Поведение begin_fill() и end_fill() несколько изменилось: теперь каждый процесс заполнения должен завершаться end_fill() вызовом.
  • Добавлен Turtle.filling() метода. Это возвращает логическое значение: True если идет процесс заполнения, False иначе. Это поведение соответствует fill() вызову без аргументов в Python 2.6.

Изменения с Python 3.0

  • Добавлены методы Turtle.shearfactor(), Turtle.shapetransform() и Turtle.get_shapepoly(). Таким образом, теперь доступен полный диапазон правильных линейных преобразований для преобразования форм черепах. Turtle.tiltangle() было улучшено в функциональности: теперь можно используемый получить или установить угол наклона. Turtle.settiltangle() устарела.
  • Метод Screen.onkeypress() был добавлен в качестве дополнения к Screen.onkey(), который фактически связывает действия с событием keyrelease. Соответственно последний получил алиас: Screen.onkeyrelease().
  • Добавлен Screen.mainloop() метода. Поэтому при работе только с объектами Screen и Turtle нельзя больше дополнительно импортировать mainloop().
  • Добавлены два метода ввода Screen.textinput() и Screen.numinput(). Эти всплывающие диалоговые окна ввода и возвращает строки и цифры соответственно.
  • В каталог tdemo_nim.py добавлены два примера сценариев tdemo_round_dance.py и Lib/turtledemo.