turtle — Графика черепахи для Tk
1. Введение
Графика черепахи — популярный способ введения программирования для детей. Она была частью оригинального языка программирования Logo, разработанного Уолли Фёрцигом и Сеймуром Папертом в 1966 году.
Представьте себе роботизированную черепаху, начинающую с координат (0, 0) в декартовой плоскости. После import turtle, дайте ей команду turtle.forward(15), и она переместится (на экране!) на 15 пикселей в направлении, в котором она смотрит, рисуя линию по мере движения. Дайте ей команду turtle.right(25), и она повернётся на месте на 25 градусов по часовой стрелке.
Комбинируя эти и подобные команды, можно легко рисовать сложные фигуры и изображения.
Модуль turtle — это расширенная переimpleментация модуля с тем же названием из стандартной дистрибуции Python до версии Python 2.5.
Он пытается сохранить достоинства старого модуля turtle и быть (почти) на 100% совместимым с ним. Это, в первую очередь, позволяет программисту-обучающемуся использовать все команды, классы и методы интерактивно, когда он использует модуль из IDLE, запущенного с переключателем -n.
Модуль turtle предоставляет примитивы графики черепахи, как в объектно-ориентированном, так и в процедурном стиле. Так как он использует Tkinter для базовой графики, ему нужна версия Python с поддержкой Tk.
Объектно-ориентированный интерфейс использует в основном два класса:
-
Класс
TurtleScreenопределяет графические окна как площадку для рисования черепах. Его конструктор требуетTkinter.CanvasилиScrolledCanvasв качестве аргумента. Он должен использоваться, когдаturtleиспользуется как часть некоторого приложения.Функция
Screen()возвращает объект-синглтон подклассаTurtleScreen. Эта функция должна использоваться, когдаturtleиспользуется как автономный инструмент для рисования. Как объект-синглтон, унаследовать от его класса невозможно.Все методы TurtleScreen/Screen также существуют в виде функций, то есть как часть процедурного интерфейса.
-
RawTurtle(псевдоним:RawPen) определяет объекты черепах, которые рисуют наTurtleScreen. Его конструктор требует холст Canvas, ScrolledCanvas или TurtleScreen в качестве аргумента, чтобы объекты RawTurtle знали, где рисовать.Производный от RawTurtle подкласс
Turtle(псевдоним:Pen), который рисует на «экранной»Screen- экземпляре, который автоматически создается, если он ещё не существует.Все методы RawTurtle/Turtle также существуют в виде функций, то есть как часть процедурного интерфейса.
Процедурный интерфейс предоставляет функции, которые производятся от методов классов Screen и Turtle. Они имеют те же имена, что и соответствующие методы. Объект экрана автоматически создаётся всякий раз, когда вызывается функция, производная от метода экрана. Объект черепахи (без имени) автоматически создается всякий раз, когда вызывается любая из функций, производных от метода черепахи.
Чтобы использовать несколько черепах на экране, необходимо использовать объектно-ориентированный интерфейс.
Примечание
В последующей документации приводится список аргументов для функций. У методов, конечно, есть дополнительный первый аргумент self, который здесь опущен.
2. Обзор доступных методов черепах и экрана
2.1. Методы черепахи
- Движение черепахи
-
- Перемещение и рисование
- Определение состояния черепахи
- Установка и измерение
- Управление пером
-
- Состояние рисования
- Управление цветом
- Заливка
- Дополнительное управление рисованием
- Состояние черепахи
-
- Видимость
- Внешний вид
- Использование событий
- Специальные методы черепахи
2.2. Методы TurtleScreen/Screen
- Управление окном
- Управление анимацией
- Использование событий экрана
- Настройки и специальные методы
- Методы, специфичные для экрана
3. Методы RawTurtle/Turtle и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру черепахи, называемому turtle.
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
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 turtle.xcor() 64.2787609687
-
turtle.ycor() -
Возвращает y-координату черепахи.
>>> turtle.home() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.pos() (50.00,86.60) >>> print turtle.ycor() 86.6025403784
-
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
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
3.4. Управление пером
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 или вернуть её. Если resizemode установлен в «auto» и turtleshape – многоугольник, этот многоугольник рисуется с той же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.
>>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn
-
turtle.pen(pen=None, **pendict) -
- Параметры
-
- pen – словарь с некоторыми или всеми нижеперечисленными ключами
- pendict – один или несколько ключевых аргументов с нижеперечисленными ключами в качестве ключевых слов
Возвращает или устанавливает атрибуты пера в «словаре пера» со следующими парами ключ/значение:
- “shown”: True/False
- “pendown”: True/False
- “pencolor”: строка цвета или кортеж цвета
- “fillcolor”: строка цвета или кортеж цвета
- “pensize”: положительное число
- “speed”: число в диапазоне 0..10
- “resizemode”: «auto» или «user» или «noresize»
- “stretchfactor”: (положительное число, положительное число)
- “outline”: положительное число
- “tilt”: число
Этот словарь может быть использован в качестве аргумента для последующего вызова
pen()для восстановления предыдущего состояния пера. Кроме того, один или несколько из этих атрибутов могут быть предоставлены в качестве ключевых аргументов. Это позволяет установить несколько атрибутов пера в одном операторе.>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> sorted(turtle.pen().items()) [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)] >>> penstate=turtle.pen() >>> turtle.color("yellow", "") >>> turtle.penup() >>> sorted(turtle.pen().items()) [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow'), ('pendown', False), ('pensize', 10), ('resizemode', 'noresize'), ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)] >>> turtle.pen(penstate, fillcolor="green") >>> sorted(turtle.pen().items()) [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red'), ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'), ('shown', True), ('speed', 9), ('stretchfactor', (1, 1)), ('tilt', 0)]
-
turtle.isdown() -
Возвращает
Trueесли перо опущено,Falseесли оно поднято.>>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True
3.4.2. Управление цветом
-
turtle.pencolor(*args) -
Возвращает или устанавливает цвет пера.
Разрешено четыре формата ввода:
-
pencolor() -
Возвращает текущий цвет пера в виде строки спецификации цвета или кортежа (см. пример). Может использоваться в качестве входных данных для другого вызова цвета/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.
Если turtleshape – многоугольник, контур этого многоугольника рисуется с новым цветом пера.
>>> 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, 204, 140) >>> turtle.pencolor('#32c18f') >>> turtle.pencolor() (50, 193, 143) -
-
turtle.fillcolor(*args) -
Возвращает или устанавливает цвет заливки.
Допускаются четыре формата ввода:
-
fillcolor() -
Возвращает текущий цвет заливки в виде строки спецификации цвета, возможно, в формате кортежа (см. пример). Может быть использован в качестве входного параметра для другого вызова функции color/pencolor/fillcolor.
-
fillcolor(colorstring) -
Устанавливает цвет заливки на colorstring, который представляет собой строку спецификации цвета Tk, например,
"red","yellow", или"#33cc8c". -
fillcolor((r, g, b)) -
Устанавливает цвет заливки на RGB цвет, представленный кортежем из r, g и b. Каждый из r, g и b должен находиться в диапазоне от 0 до colormode, где colormode равен либо 1.0, либо 255 (см.
colormode()). -
fillcolor(r, g, b) -
Устанавливает цвет заливки на RGB цвет, представленный r, g и b. Каждый из r, g и b должен находиться в диапазоне от 0 до colormode.
Если форма черепахи — многоугольник, внутренняя часть этого многоугольника рисуется с установленным цветом заливки.
>>> turtle.fillcolor("violet") >>> turtle.fillcolor() 'violet' >>> col = turtle.pencolor() >>> col (50, 193, 143) >>> turtle.fillcolor(col) >>> turtle.fillcolor() (50, 193, 143) >>> turtle.fillcolor('#ffffff') >>> turtle.fillcolor() (255, 255, 255) -
-
turtle.color(*args) -
Возвращает или устанавливает цвет пера и цвет заливки.
Разрешены несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:
-
color() -
Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк спецификации цвета или кортежей, как возвращается функциями
pencolor()иfillcolor(). -
color(colorstring), color((r,g,b)), color(r,g,b) -
Ввод, как в
pencolor(), устанавливает оба значения: цвет заливки и цвет пера, заданным значением. -
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) -
Эквивалентно
pencolor(colorstring1)иfillcolor(colorstring2)и аналогично, если используется другой формат ввода.Если форма черепахи — многоугольник, контур и внутренняя часть этого многоугольника рисуются с установленными цветами.
>>> turtle.color("red", "green") >>> turtle.color() ('red', 'green') >>> color("#285078", "#a0c8f0") >>> color() ((40, 80, 120), (160, 200, 240)) -
См. также: метод экрана colormode().
3.4.3. Заливка
-
turtle.fill(flag) -
- Параметры
-
flag – Истина/Ложь (или 1/0 соответственно)
Вызовите
fill(True)перед рисованием фигуры, которую вы хотите заполнить, иfill(False)по завершении. При использовании без аргумента: возвращает состояние заливки (Trueесли заливка включена,Falseв противном случае).>>> turtle.fill(True) >>> for _ in range(3): ... turtle.forward(100) ... turtle.left(120) ... >>> turtle.fill(False)
-
turtle.begin_fill() -
Вызов перед рисованием фигуры для заливки. Эквивалентно
fill(True).
-
turtle.end_fill() -
Заполните фигуру, нарисованную после последнего вызова
begin_fill(). Эквивалентноfill(False).>>> turtle.color("black", "red") >>> turtle.begin_fill() >>> turtle.circle(80) >>> turtle.end_fill()
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 – Истина/Ложь
- 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)
3.5. Состояние черепахи
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
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”
Установите режим масштабирования на одно из значений: “auto”, “user”, “noresize”. Если rmode не указан, верните текущий режим масштабирования. Различные режимы масштабирования имеют следующие эффекты:
- “auto”: адаптирует внешний вид черепахи в соответствии со значением pensize.
- “user”: адаптирует внешний вид черепахи в соответствии со значениями stretchfactor и outlinewidth (контур), которые устанавливаются с помощью
shapesize(). - “noresize”: адаптация внешнего вида черепахи не происходит.
resizemode(“user”) вызывается
shapesize()при использовании с аргументами.>>> turtle.resizemode() 'noresize' >>> turtle.resizemode("auto") >>> turtle.resizemode() 'auto'
-
turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None) -
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None) -
- Параметры
-
- stretch_wid – положительное число
- stretch_len – положительное число
- outline – положительное число
Возвращает или устанавливает атрибуты пера x/y-stretchfactors и/или контур. Устанавливает режим масштабирования на “user”. Если и только если режим масштабирования установлен на “user”, черепаха будет отображаться, растянутая в соответствии со своими stretchfactors: stretch_wid — stretchfactor перпендикулярно ее ориентации, stretch_len — stretchfactor по направлению ее ориентации, outline определяет ширину контура фигуры.
>>> turtle.shapesize() (1, 1, 1) >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize() (5, 5, 12) >>> turtle.shapesize(outline=8) >>> turtle.shapesize() (5, 5, 8)
-
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)
-
turtle.tiltangle() -
Возвращает текущий угол наклона, т.е. угол между ориентацией формы черепахи и направлением движения черепахи (направление движения).
>>> turtle.reset() >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() 45.0
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)
Впоследствии, нажатие и перетаскивание черепахи перемещает ее по экрану, тем самым создавая рисунки от руки (если перо опущенно).
-
turtle.mainloop() -
turtle.done() -
Запускает цикл обработки событий — вызывая функцию mainloop Tkinter. Должен быть последней инструкцией в программе графики черепах.
>>> turtle.mainloop()
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()
-
turtle.tracer(flag=None, delay=None) -
Копия соответствующего метода TurtleScreen.
Устарело начиная с версии 2.6.
-
turtle.window_width() -
turtle.window_height() -
Оба являются копиями соответствующих методов TurtleScreen.
Устарело начиная с версии 2.6.
3.8. Вспомогательные сведения о использовании составных фигур
Чтобы использовать составные фигуры черепахи, состоящие из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс Shape, как описано ниже:
- Создайте пустой объект Shape типа “compound”.
-
Добавьте столько компонентов в этот объект, сколько нужно, используя метод
addcomponent().Например:
>>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s.addcomponent(poly1, "red", "blue") >>> poly2 = ((0,0),(10,-5),(-10,-5)) >>> s.addcomponent(poly2, "blue", "red") -
Теперь добавьте Shape в список фигур экрана и используйте его:
>>> register_shape("myshape", s) >>> shape("myshape")
Примечание
Класс Shape используется внутри методом register_shape() различными способами. Разработчик приложения должен работать с классом Shape только при использовании составных фигур, как показано выше!
4. Методы TurtleScreen/Screen и соответствующие функции
Большинство примеров в этом разделе относятся к экземпляру TurtleScreen с именем screen.
4.1. Управление окном
-
turtle.bgcolor(*args) -
- Параметры
-
args – строка цвета или три числа в диапазоне 0..colormode или 3-кортеж таких чисел
Устанавливает или возвращает цвет фона TurtleScreen.
>>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor("#800080") >>> screen.bgcolor() (128, 0, 128)
-
turtle.bgpic(picname=None) -
- Параметры
-
picname – строка, имя gif-файла или
"nopic", илиNone
Устанавливает изображение фона или возвращает имя текущего изображения фона. Если picname – имя файла, устанавливает соответствующее изображение в качестве фона. Если picname равно
"nopic", удаляет изображение фона, если оно есть. Если picname равноNone, возвращает имя файла текущего изображения фона.>>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() "landscape.gif"
-
turtle.clear() -
turtle.clearscreen() -
Удаляет все рисунки и всех черепах из TurtleScreen. Сбрасывает теперь пустой TurtleScreen в его начальное состояние: белый фон, нет изображения фона, нет привязок событий и включена отслеживающая отрисовка.
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
clearscreen. Глобальная функцияclear— еще одна, полученная из метода черепахиclear.
-
turtle.reset() -
turtle.resetscreen() -
Сбрасывает все черепахи на экране до их начального состояния.
Примечание
Этот метод TurtleScreen доступен как глобальная функция только под именем
resetscreen. Глобальная функцияreset— еще одна, полученная из метода черепахиreset.
-
turtle.screensize(canvwidth=None, canvheight=None, bg=None) -
- Параметры
-
- canvwidth – положительное целое число, новая ширина холста в пикселях
- canvheight – положительное целое число, новая высота холста в пикселях
- bg – строка цвета или кортеж цвета, новый цвет фона
Если аргументы не заданы, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором черепахи рисуют. Не изменяет окно отрисовки. Чтобы увидеть скрытые части холста, используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые были вне холста ранее.
>>> screen.screensize() (400, 300) >>> screen.screensize(2000,1500) >>> screen.screensize() (2000, 1500)
например, для поиска ошибочно вылетевшей черепахи ;-)
-
turtle.setworldcoordinates(llx, lly, urx, ury) -
- Параметры
-
- llx – число, координата x нижнего левого угла холста
- lly – число, координата y нижнего левого угла холста
- urx – число, координата x верхнего правого угла холста
- ury – число, координата y верхнего правого угла холста
Устанавливает пользовательскую систему координат и переключается на режим «мир», если необходимо. Это выполняет
screen.reset(). Если режим «мир» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.ВНИМАНИЕ: в пользовательских системах координат углы могут выглядеть искаженными.
>>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) >>> for _ in range(72): ... left(10) ... >>> for _ in range(8): ... left(45); fd(2) # a regular octagon
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-е регулярное обновление экрана. (Может использоваться для ускорения отрисовки сложных графиков.) Второй аргумент устанавливает значение задержки (см.
delay()).>>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2
-
turtle.update() -
Выполняет обновление TurtleScreen. Используется, когда отслеживающая отрисовка выключена.
См. также метод RawTurtle/Turtle speed().
4.3. Использование событий экрана
-
turtle.listen(xdummy=None, ydummy=None) -
Фокусирует внимание на TurtleScreen (для сбора событий нажатия клавиш). Аргументы-заглушки предоставлены, чтобы иметь возможность передавать
listen()методу onclick.
-
turtle.onkey(fun, key) -
- Параметры
-
-
fun – функция без аргументов или
None - key – строка: клавиша (например, “a”) или символ клавиши (например, “space”)
-
fun – функция без аргументов или
Привязывает fun к событию отпускания клавиши key. Если fun
None, привязки событий удаляются. Примечание: для регистрации событий нажатия клавиш TurtleScreen должен иметь фокус. (См. методlisten().)>>> def f(): ... fd(50) ... lt(60) ... >>> 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 с именем черепаха:>>> 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
4.4. Настройки и специальные методы
-
turtle.mode(mode=None) -
- Параметры
-
mode – одна из строк “standard”, “logo” или “world”
Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если режим не указан, возвращается текущий режим.
Режим “standard” совместим со старыми
turtle. Режим “logo” совместим с большинством программ для работы с графикой черепах Logo. Режим “world” использует пользовательские “координаты мира”. Внимание: в этом режиме углы отображаются искаженными, еслиx/yединичный коэффициент не равен 1.Режим
Начальное направление черепахи
положительные углы
“standard”
вправо (восток)
против часовой стрелки
“logo”
вверх (север)
по часовой стрелке
>>> mode("logo") # resets turtle heading to north >>> mode() 'logo'
-
turtle.colormode(cmode=None) -
- Параметры
-
cmode – одно из значений 1.0 или 255
Возвращает режим цвета или устанавливает его в 1.0 или 255. В дальнейшем значения r, g, b цветовых троек должны быть в диапазоне 0..cmode.
>>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) Traceback (most recent call last): ... TurtleGraphicsError: bad color sequence: (240, 160, 80) >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> screen.colormode() 255 >>> turtle.pencolor(240,160,80)
-
turtle.getcanvas() -
Возвращает холст этой TurtleScreen. Полезно для специалистов, которые знают, что делать с холстом Tkinter.
>>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas instance at 0x...>
-
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
4.5. Методы, специфичные для экрана, не унаследованные от 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!")
5. Публичные классы модуля turtle
-
class turtle.RawTurtle(canvas) -
class turtle.RawPen(canvas) -
- Параметры
-
canvas –
Tkinter.Canvas,ScrolledCanvasилиTurtleScreen
Создание черепахи. Черепаха имеет все описанные выше методы как “методы Turtle/RawTurtle”.
-
class turtle.Turtle -
Подкласс RawTurtle, имеет тот же интерфейс, но рисует на стандартном объекте
Screen, создаваемом автоматически при первой необходимости.
-
class turtle.TurtleScreen(cv) -
- Параметры
-
cv –
Tkinter.Canvas
Предоставляет методы, ориентированные на экран, такие как
setbg()и т.д., которые описаны выше.
-
class turtle.Screen -
Подкласс TurtleScreen, с четырьмя добавленными методами.
-
class turtle.ScrolledCanvas(master) -
- Параметры
-
master – какой-то виджет Tkinter для размещения ScrolledCanvas, т. е. холст Tkinter со встроенными полосами прокрутки
Используется классом Screen, который тем самым автоматически предоставляет ScrolledCanvas в качестве игровой площадки для черепах.
-
class turtle.Shape(type_, data) -
- Параметры
-
type_ – одно из строк “polygon”, “image”, “compound”
Структура данных, моделирующая фигуры. Пара
(type_, data)должна соответствовать этому спецификации:type_
data
“polygon”
многоугольник, т.е. кортеж пар координат
“image”
изображение (в таком виде используется только внутри!)
“compound”
None(сложная фигура должна быть построена с помощью методаaddcomponent())-
addcomponent(poly, fill, outline=None) -
- Параметры
-
- poly – многоугольник, т.е. кортеж пар чисел
- fill – цвет, которым будет залито poly
- outline – цвет контура poly (если указан)
Пример:
>>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # ... 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)вращение
-
6. Справка и настройка
6.1. Как использовать справку
Общедоступные методы классов Screen и Turtle подробно документированы в docstrings. Поэтому их можно использовать как онлайн-справку с помощью средств 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 создаются автоматически вместе с определениями функций, которые получены из методов, во время импорта.
6.2. Перевод docstrings на разные языки
Существует утилита для создания словаря, ключами которого являются имена методов, а значениями — docstrings общедоступных методов классов Screen и Turtle.
-
turtle.write_docstringdict(filename="turtle_docstringdict") -
- Параметры
-
filename – строка, используемая как имя файла
Создаёт и записывает словарь docstrings в Python-скрипт с заданным именем файла. Эту функцию необходимо вызывать явно (она не используется классами графики черепахи). Словарь docstrings будет записан в Python-скрипт
filename.py. Он предназначен для использования в качестве шаблона для перевода docstrings на разные языки.
Если вы (или ваши студенты) хотите использовать turtle с онлайн-справкой на родном языке, вам нужно перевести docstrings и сохранить полученный файл, например, как turtle_docstringdict_german.py.
Если в вашем файле turtle.cfg есть соответствующая запись, этот словарь будет прочитан при импорте и заменит исходные английские docstrings.
На момент написания этой справки существуют словари docstrings на немецком и итальянском языках. (Запросы, пожалуйста, на glingl@aon.at.)
6.3. Как настроить Screen и Turtles
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля черепахи, чтобы сохранить максимальную совместимость с ним.
Если вы хотите использовать другую конфигурацию, которая лучше отражает функции этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации turtle.cfg, который будет прочитан при импорте, и изменить конфигурацию в соответствии с его настройками.
Встроенная конфигурация соответствует следующему файлу turtle.cfg:
width = 0.5 height = 0.75 leftright = None topbottom = None canvwidth = 400 canvheight = 300 mode = standard colormode = 1.0 delay = 10 undobuffersize = 1000 shape = classic pencolor = black fillcolor = black resizemode = noresize visible = True language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = False
Краткое объяснение выбранных записей:
- Первые четыре строки соответствуют аргументам метода
Screen.setup(). - Строки 5 и 6 соответствуют аргументам метода
Screen.screensize(). -
shape может быть любой из встроенных форм, например: стрелка, черепаха и т.д. Для получения дополнительной информации попробуйте
help(shape). - Если вы хотите не использовать fillcolor (т.е. сделать черепаху прозрачной), нужно написать
fillcolor = ""(но все непустые строки не должны содержать кавычек в файле cfg). - Если вы хотите отобразить состояние черепахи, нужно использовать
resizemode = auto. - Если вы установите, например,
language = italian, словарь docstringdictturtle_docstringdict_italian.pyбудет загружен во время импорта (если он присутствует на пути импорта, например, в той же директории, что иturtle. - Записи exampleturtle и examplescreen определяют имена этих объектов, как они появляются в docstrings. Преобразование docstrings методов в docstrings функций удалит эти имена из docstrings.
-
using_IDLE: Установите это значение в
Trueесли вы регулярно работаете с IDLE и его переключателем -n (“без подпроцесса”). Это предотвратитexitonclick()от входа в цикл обработки событий.
В каталоге, где находится turtle, может быть файл turtle.cfg, а также дополнительный в текущем рабочем каталоге. Последний переопределит настройки первого.
Каталог Demo/turtle содержит файл turtle.cfg. Вы можете изучить его как пример и увидеть его влияние при запуске демонстраций (предпочтительно не изнутри программы просмотра демонстраций).
7. Демонстрационные скрипты
В каталоге turtledemo, расположенном в Demo/turtle каталоге дистрибутива исходного кода, имеется набор демонстрационных скриптов.
Он содержит:
- набор из 15 демонстрационных скриптов, демонстрирующих различные функции нового модуля
turtle - просмотрщик демо
turtleDemo.py, который можно использовать для просмотра исходного кода скриптов и их одновременного запуска. 14 примеров доступны через меню "Примеры"; все они также могут быть запущены автономно. - Пример
turtledemo_two_canvases.pyдемонстрирует одновременное использование двух холстов с модулем черепахи. Поэтому его можно запустить только автономно. - В этом каталоге есть файл
turtle.cfg, который также служит примером того, как писать и использовать такие файлы.
Демонстрационные скрипты:
Имя | Описание | Функции |
|---|---|---|
bytedesign | сложный классический узор черепашьей графики | |
chaos | графики динамики Верхульста, показывает, что вычисления компьютера могут иногда генерировать результаты, которые противоречат здравому смыслу | координаты мира |
clock | аналоговые часы, показывающие время вашего компьютера | черепахи как стрелки часов, ontimer |
colormixer | эксперимент с r, g, b | |
fractalcurves | кривые Гильберта и Коха | рекурсия |
lindenmayer | этноматематика (индийские колами) | Система L |
minimal_hanoi | Ханойская башня | Прямоугольные черепахи как диски Ханойской башни (форма, размер фигур) |
paint | очень минималистическая программа рисования | |
peace | элементарный | черепаха: внешний вид и анимация |
penrose | апериодическая плитка с стрелами и косами | |
planet_and_moon | моделирование гравитационной системы | составные фигуры, |
tree | дерево (графическое) в ширину (использование генераторов) | |
wikipedia | узор из статьи Википедии о графике черепахи | |
yinyang | ещё один элементарный пример |
Приятного использования!
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/turtle.html