turtle — Графика черепахи
Исходный код: Lib/turtle.py
24.1.1. Введение
Графика черепахи — популярный способ введения программирования для детей. Она была частью оригинального языка программирования Logo, разработанного Уолли Фёрцигом и Сеймуром Папертом в 1966 году.
Представьте себе роботизированную черепаху, начинающуюся в точке (0, 0) на плоскости x-y. После import turtle, дайте ей команду turtle.forward(15), и она переместится (на экране!) на 15 пикселей в направлении, в котором она смотрит, рисуя линию при движении. Дайте ей команду turtle.right(25), и она повернётся на месте на 25 градусов по часовой стрелке.
Комбинируя эти и подобные команды, можно легко нарисовать сложные фигуры и изображения.
Модуль turtle — это расширенная повторная реализация модуля с тем же названием из стандартного дистрибутива Python до версии Python 2.5.
Он старается сохранить достоинства старого модуля turtle и быть (почти) на 100% совместимым с ним. Это, прежде всего, означает возможность для изучающего программиста использовать все команды, классы и методы интерактивно при использовании модуля изнутри IDLE, запущенного с ключом -n.
Модуль turtle предоставляет примитивы графики черепахи как в объектно-ориентированном, так и в процедурном стиле. Поскольку он использует tkinter для базовой графики, для его работы требуется версия Python с поддержкой Tk.
Объектно-ориентированный интерфейс использует в основном два класса:
-
Класс
TurtleScreenопределяет графические окна как площадку для рисования черепах. Его конструктор требуетtkinter.CanvasилиScrolledCanvasв качестве аргумента. Его следует использовать, когдаturtleиспользуется как часть некоторого приложения.Функция
Screen()возвращает одиночный объект подклассаTurtleScreen. Эту функцию следует использовать, когдаturtleиспользуется как самостоятельный инструмент для графики. Как одиночный объект, наследование от его класса невозможно.Все методы TurtleScreen/Screen также существуют в виде функций, то есть как часть процедурного интерфейса.
-
RawTurtle(псевдоним:RawPen) определяет объекты Turtle, которые рисуют наTurtleScreen. Его конструктор требует Canvas, ScrolledCanvas или TurtleScreen в качестве аргумента, чтобы объекты RawTurtle знали, где рисовать.Производным от RawTurtle является подкласс
Turtle(псевдоним:Pen), который рисует на экземпляреScreen, который автоматически создаётся, если он ещё не существует.Все методы RawTurtle/Turtle также существуют в виде функций, то есть как часть процедурного интерфейса.
Процедурный интерфейс предоставляет функции, производные от методов классов Screen и Turtle. Они имеют те же имена, что и соответствующие методы. Объект экрана автоматически создаётся всякий раз, когда вызывается функция, производная от метода Screen. Объект черепахи (без имени) автоматически создаётся всякий раз, когда вызывается любая из функций, производных от метода Turtle.
Чтобы использовать несколько черепах на экране, необходимо использовать объектно-ориентированный интерфейс.
Примечание
В последующей документации приводится список аргументов для функций. У методов, конечно, есть дополнительный первый аргумент self, который здесь опущен.
24.1.2. Обзор доступных методов черепахи и экрана
24.1.2.1. Методы черепахи
- Движение черепахи
-
- Перемещение и рисование
- Получение состояния черепахи
- Установка и измерение
- Управление пером
-
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительное управление рисованием
- Состояние черепахи
-
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
24.1.2.2. Методы TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы ввода
- Методы, специфичные для Screen
24.1.3. Методы RawTurtle/Turtle и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру Turtle под названием turtle.
24.1.3.1. Движение черепахи
-
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() -
Отпечатать копию фигуры черепахи на холсте в текущей позиции черепахи. Вернуть идентификатор отпечатка stamp_id, который может быть использован для удаления с помощью вызова
clearstamp(stamp_id).>>> turtle.color("blue") >>> turtle.stamp() 11 >>> turtle.fd(50)
-
turtle.clearstamp(stampid) -
- Параметры
-
stampid – целое число, должно быть результатом предыдущего вызова
stamp()
Удалить отпечаток с заданным stampid.
>>> turtle.position() (150.00,-0.00) >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.position() (200.00,-0.00) >>> turtle.clearstamp(astamp) >>> turtle.position() (200.00,-0.00)
-
turtle.clearstamps(n=None) -
- Параметры
-
n – целое число (или
None)
Удалить все или первые/последние n отпечатков черепахи. Если n
None, удалить все отпечатки, если n > 0 удалить первые n отпечатков, иначе если n < 0 удалить последние n отпечатков.>>> for i in range(8): ... turtle.stamp(); turtle.fd(30) 13 14 15 16 17 18 19 20 >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps()
-
turtle.undo() -
Отменить (повторно) последнее(ие) действие(я) черепахи. Количество доступных отмен определяется размером буфера отмены.
>>> 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
24.1.3.2. Состояние черепахи
-
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
24.1.3.3. Настройки для измерения
-
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
24.1.3.4. Управление пером
24.1.3.4.1. Состояние рисования
-
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”: «авто» или «пользователь» или «нет изменения размера»
- “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
24.1.3.4.2. Управление цветом
-
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.
Если turtleshape представляет собой многоугольник, то внутренняя часть этого многоугольника рисуется новым цветом заливки.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> col = turtle.pencolor() >>> col (50.0, 193.0, 143.0) >>> turtle.fillcolor(col) >>> turtle.fillcolor() (50.0, 193.0, 143.0) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255.0, 255.0, 255.0) -
-
turtle.color(*args) -
Возвращает или устанавливает цвет пера и цвет заливки.
Разрешены несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:
-
color() -
Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или кортежей спецификации цвета, как возвращается
pencolor()иfillcolor(). -
color(colorstring), color((r,g,b)), color(r,g,b) -
Ввод, как в
pencolor(), устанавливает и цвет заливки, и цвет пера на заданное значение. -
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) -
Эквивалентно
pencolor(colorstring1)иfillcolor(colorstring2)и аналогично, если используется другой формат ввода.Если turtleshape является многоугольником, контур и внутренняя часть этого многоугольника рисуются с помощью установленных цветов.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40.0, 80.0, 120.0), (160.0, 200.0, 240.0)) -
См. также: метод экрана colormode().
24.1.3.4.3. Заливка
-
turtle.filling() -
Возвращает fillstate (
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()
24.1.3.4.4. Дополнительный контроль рисования
-
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)
24.1.3.5. Состояние черепахи
24.1.3.5.1. Видимость
-
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
24.1.3.5.2. Внешний вид
-
turtle.shape(name=None) -
- Параметры
-
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)Deprecated since version 3.1.
-
turtle.tiltangle(angle=None) -
- Параметры
-
angle – число (необязательно)
Устанавливает или возвращает текущий угол наклона. Если угол задан, поворачивает форму черепахи так, чтобы она указывала в направлении, заданном углом, независимо от её текущего угла наклона. Не изменяет направление движения черепахи. Если угол не задан: возвращает текущий угол наклона, т. е. угол между ориентацией формы черепахи и направлением движения черепахи.
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
-
turtle.shapetransform(t11=None, t12=None, t21=None, t22=None) -
- Параметры
-
- t11 – число (необязательно)
- t12 – число (необязательно)
- t21 – число (необязательно)
- t12 – число (необязательно)
Устанавливает или возвращает текущую матрицу преобразования формы черепахи.
Если ни один из элементов матрицы не задан, возвращает матрицу преобразования в виде кортежа из 4 элементов. В противном случае устанавливает заданные элементы и преобразует форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, 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))
24.1.3.6. Использование событий
-
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)
Впоследствии, нажатие и перетаскивание черепахи переместит её по экрану, тем самым создавая рисунки от руки (если перо опущено).
24.1.3.7. Специальные методы черепахи
-
turtle.begin_poly() -
Начинает запись вершин многоугольника. Текущая позиция черепахи является первой вершиной многоугольника.
-
turtle.end_poly() -
Останавливает запись вершин многоугольника. Текущая позиция черепахи является последней вершиной многоугольника. Она будет соединена с первой вершиной.
-
turtle.get_poly() -
Возвращает последний записанный многоугольник.
>>> turtle.home() >>> turtle.begin_poly() >>> turtle.fd(100) >>> turtle.left(20) >>> turtle.fd(30) >>> turtle.left(60) >>> turtle.fd(50) >>> turtle.end_poly() >>> p = turtle.get_poly() >>> register_shape("myFavouriteShape", p)
-
turtle.clone() -
Создаёт и возвращает клон черепахи с теми же позицией, направлением и свойствами черепахи.
>>> mick = Turtle() >>> joe = mick.clone()
-
turtle.getturtle() -
turtle.getpen() -
Возвращает сам объект Turtle. Единственное разумное использование: как функция для возвращения «анонимной черепахи»:
>>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x...>
-
turtle.getscreen() -
Возвращает объект
TurtleScreen, на котором черепаха рисует. Методы TurtleScreen затем могут быть вызваны для этого объекта.>>> ts = turtle.getscreen() >>> ts <turtle._Screen object at 0x...> >>> ts.bgcolor("pink")
-
turtle.setundobuffer(size) -
- Параметры
-
size – целое число или
None
Устанавливает или отключает буфер отмены. Если size — целое число, устанавливается пустой буфер отмены заданного размера. size задаёт максимальное количество действий черепахи, которые можно отменить с помощью метода/функции
undo(). Если size —None, буфер отмены отключён.>>> turtle.setundobuffer(42)
-
turtle.undobufferentries() -
Возвращает количество записей в буфере отмены.
>>> while undobufferentries(): ... undo()
24.1.3.8. Составные формы
Чтобы использовать составные формы черепахи, состоящие из нескольких многоугольников разного цвета, вы должны явно использовать вспомогательный класс Shape, как описано ниже:
- Создайте пустой объект Shape типа «составной».
-
Добавьте в этот объект столько компонентов, сколько необходимо, используя метод
addcomponent().Например:
>>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s.addcomponent(poly1, "red", "blue") >>> poly2 = ((0,0),(10,-5),(-10,-5)) >>> s.addcomponent(poly2, "blue", "red") -
Теперь добавьте Shape в список форм экрана и используйте его:
>>> register_shape("myshape", s) >>> shape("myshape")
Примечание
Класс Shape используется внутренне методом register_shape() различными способами. Разработчик приложения должен обращаться с классом Shape только при использовании составных форм, как показано выше!
24.1.4. Методы TurtleScreen/Screen и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру TurtleScreen под названием screen.
24.1.4.1. Управление окном
-
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— другая, производная от метода Turtleclear.
-
turtle.reset() -
turtle.resetscreen() -
Возвращает всех черепах на экране в их первоначальное состояние.
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
resetscreen. Глобальная функцияreset— другая, производная от метода Turtlereset.
-
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
24.1.4.2. Управление анимацией
-
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().
24.1.4.3. Использование событий экрана
-
turtle.listen(xdummy=None, ydummy=None) -
Фокусировка на TurtleScreen (для сбора событий нажатия клавиш). Аргументы-фиктивные, чтобы можно было передать
listen()методу onclick.
-
turtle.onkey(fun, key) -
turtle.onkeyrelease(fun, key) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: ключ (например, «a») или символ ключа (например, «пробел»)
-
fun – функция без аргументов или
Связать fun с событием отпускания клавиши. Если fun
None, связи событий удаляются. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. методlisten().)>>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen()
-
turtle.onkeypress(fun, key=None) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: ключ (например, «a») или символ ключа (например, «пробел»)
-
fun – функция без аргументов или
Связать fun с событием нажатия клавиши, если ключ задан, или с любым событием нажатия клавиши, если ключ не задан. Примечание: для регистрации событий нажатия клавиш 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() -
Запускает цикл событий — вызывая функцию Tkinter’s mainloop. Должен быть последней строкой в программе графики черепахи. Не должен использоваться, если скрипт выполняется из IDLE в режиме -n (без подпроцесса) — для интерактивного использования графики черепах.
>>> screen.mainloop()
24.1.4.4. Методы ввода
-
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)
24.1.4.5. Настройки и специальные методы
-
turtle.mode(mode=None) -
- Параметры
-
mode – одна из строк «стандартный», «логотип» или «мир»
Установить режим черепахи («стандартный», «логотип» или «мир») и выполнить сброс. Если режим не задан, возвращается текущий режим.
Режим «стандартный» совместим со старым
turtle. Режим «логотип» совместим с большинством программ графики черепах Logo. Режим «мир» использует пользовательские «мировые координаты». ВНИМАНИЕ: в этом режиме углы искажаются, еслиx/yотношение единиц не равно 1.Режим
Начальное направление черепахи
Положительные углы
«стандартный»
вправо (восток)
против часовой стрелки
«логотип»
вверх (север)
по часовой стрелке
>>> 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
24.1.4.6. Методы, специфичные для экрана, не унаследованные от 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!")
24.1.5. Общедоступные классы
-
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-canvas со добавленными полосами прокрутки
Используется классом 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)поворот
-
24.1.6. Справка и настройка
24.1.6.1. Как использовать справку
Общедоступные методы классов Screen и Turtle подробно документированы с помощью docstring. Поэтому их можно использовать в качестве онлайн-справки через средства Python справки:
- При использовании IDLE всплывающие подсказки показывают сигнатуры и первые строки docstrings вызываемых функций/методов.
-
Вызов
help()для методов или функций отображает docstrings:>>> help(Screen.bgcolor) Help on method bgcolor in module turtle: bgcolor(self, *args) unbound turtle.Screen method Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. >>> screen.bgcolor("orange") >>> screen.bgcolor() "orange" >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() "#800080" >>> help(Turtle.penup) Help on method penup in module turtle: penup(self) unbound turtle.Turtle method Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument >>> turtle.penup() -
Docstrings функций, которые получены из методов, имеют изменённую форму:
>>> help(bgcolor) Help on function bgcolor in module turtle: bgcolor(*args) Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example:: >>> bgcolor("orange") >>> bgcolor() "orange" >>> bgcolor(0.5,0,0.5) >>> bgcolor() "#800080" >>> help(penup) Help on function penup in module turtle: penup() Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example: >>> penup()
Эти изменённые docstrings создаются автоматически вместе с определениями функций, полученными из методов, во время импорта.
24.1.6.2. Перевод docstrings на разные языки
Существует утилита для создания словаря, ключи которого — имена методов, а значения — docstrings общедоступных методов классов Screen и Turtle.
-
turtle.write_docstringdict(filename="turtle_docstringdict") -
- Параметры
-
filename – строка, используемая в качестве имени файла
Создать и записать словарь docstring в скрипт Python с заданным именем файла. Эта функция должна вызываться явно (она не используется классами графики черепах). Словарь docstring будет записан в скрипт Python
filename.py. Он предназначен для использования в качестве шаблона для перевода docstrings на разные языки.
Если вы (или ваши студенты) хотите использовать turtle с онлайн-справкой на родном языке, вам нужно перевести docstrings и сохранить получившийся файл, например, как turtle_docstringdict_german.py.
Если в вашем файле turtle.cfg есть соответствующая запись, этот словарь будет прочитан во время импорта и заменит оригинальные английские docstrings.
На момент написания этой документации существуют словари docstring на немецком и итальянском языках. (Запросы, пожалуйста, на glingl@aon.at.)
24.1.6.3. Как настроить экран и черепах
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля 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(). -
фигура может быть любой из встроенных фигур, например: стрелка, черепаха и т. д. Для получения дополнительной информации попробуйте
help(shape). - Если вы хотите использовать без цвета заливки (т. е. сделать черепаху прозрачной), вы должны написать
fillcolor = ""(но все непустые строки не должны содержать кавычек в файле cfg). - Если вы хотите отобразить состояние черепахи, вы должны использовать
resizemode = auto. - Если вы установите, например,
language = italian, то словарь docstringdictturtle_docstringdict_italian.pyбудет загружен во время импорта (если он присутствует на пути импорта, например, в той же директории, что иturtle). - Элементы exampleturtle и examplescreen определяют имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.
-
using_IDLE: Установите это значение в
True, если вы регулярно работаете с IDLE и его переключателем -n (“без дочернего процесса”). Это предотвратитexitonclick()от входа в цикл обработки событий.
В каталоге, где хранится turtle, может быть файл turtle.cfg, а также дополнительный файл в текущей рабочей директории. Последний переопределит настройки первого.
В каталоге Lib/turtledemo находится файл turtle.cfg. Вы можете изучить его как пример и увидеть его эффекты при запуске демо-примеров (желательно не изнутри визуализатора демо).
24.1.7. 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 | танцующие черепахи, вращающиеся парами в противоположных направлениях | сложные фигуры, клонирование размера фигуры, наклон, получение многоугольника фигуры, обновление |
sorting_animate | визуальная демонстрация различных методов сортировки | простая выравнивание, случайность |
tree | дерево (графическое) в ширину (используя генераторы) |
|
two_canvases | простой дизайн | черепахи на двух холстах |
wikipedia | шаблон из статьи Википедии о графике черепах |
|
yinyang | еще один элементарный пример |
|
Приятного творчества!
24.1.8. Изменения с момента 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.
24.1.9. Изменения с момента Python 3.0
- Методы
Turtle.shearfactor(),Turtle.shapetransform()иTurtle.get_shapepoly()были добавлены. Таким образом, весь набор обычных линейных преобразований теперь доступен для преобразования фигур черепах.Turtle.tiltangle()был усовершенствован функционально: теперь он может использоваться для получения или установки угла наклона.Turtle.settiltangle()устарел. - Метод
Screen.onkeypress()был добавлен как дополнение кScreen.onkey(), который фактически связывает действия с событием отпускания клавиши. Соответственно, последний получил псевдоним:Screen.onkeyrelease(). - Добавлен метод
Screen.mainloop(). Таким образом, при работе только с объектами Screen и Turtle не нужно дополнительно импортироватьmainloop(). - Добавлены два метода ввода
Screen.textinput()иScreen.numinput(). Эти всплывающие диалоговые окна ввода возвращают строки и числа соответственно. - Два демо-скрипта
tdemo_nim.pyиtdemo_round_dance.pyбыли добавлены в каталогLib/turtledemo.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/turtle.html