turtle.md
1> **Источник:** https://python-all.ru/3.12/library/turtle.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle) – Черепашья графика89**Исходный код:** [Lib/turtle.py](https://python-all.ru/src/3.12/Lib/turtle.py)1011---1213## Введение1415Черепашья графика – это реализация [популярных инструментов геометрического рисования, впервые представленных в Logo](https://python-all.ru/3.12/library/turtle.html), разработанных Уолли Фёрзейгом, Сеймуром Пейпертом и Синтией Соломон в 1967 году.1617Черепашья звезда1819Черепашка может рисовать сложные фигуры с помощью программ, повторяющих простые движения.20212223В Python черепашья графика предоставляет представление физической «черепашки» (маленького робота с пером), которая рисует на листе бумаги на полу.2425Это эффективный и проверенный способ для учащихся знакомиться с концепциями программирования и взаимодействием с программным обеспечением, поскольку он обеспечивает мгновенную видимую обратную связь. Он также предоставляет удобный доступ к графическому выводу в целом.2627Рисование с помощью черепашки было изначально создано как образовательный инструмент для использования учителями в классе. Для программиста, которому нужно получить некоторый графический вывод, это может быть способом сделать это без излишних сложностей, связанных с внедрением более сложных или внешних библиотек в свою работу.2829## Учебное руководство3031Здесь следует начать новым пользователям. В этом руководстве мы рассмотрим некоторые основы рисования с помощью черепашки.3233### Запуск среды черепашки3435В оболочке Python импортируйте все объекты модуля `turtle`:3637```python38from turtle import *39```4041Если вы столкнётесь с ошибкой `No module named '_tkinter'`, вам придётся установить [`Tk interface package`](https://python-all.ru/3.12/library/tkinter.html#module-tkinter) в вашу систему.4243### Основы рисования4445Отправьте черепашку вперёд на 100 шагов:4647```python48forward(100)49```5051Вы должны увидеть (скорее всего, в новом окне на вашем дисплее) линию, нарисованную черепашкой, направленную на восток. Измените направление черепашки так, чтобы она повернулась на 120 градусов влево (против часовой стрелки):5253```python54left(120)55```5657Давайте продолжим, нарисовав треугольник:5859```python60forward(100)61left(120)62forward(100)63```6465Обратите внимание, как черепашка, представленная стрелкой, указывает в разные направления по мере управления ею.6667Экспериментируйте с этими командами, а также с `backward()` и `right()`.6869#### Управление пером7071Попробуйте изменить цвет (например, `color('blue')`) и толщину линии (например, `width(3)`), а затем снова нарисуйте.7273Вы также можете перемещать черепашку без рисования, подняв перо: `up()` перед перемещением. Чтобы снова начать рисовать, используйте `down()`.7475#### Позиция черепашки7677Отправьте черепашку обратно в начальную точку (полезно, если она исчезла с экрана):7879```python80home()81```8283Домашняя позиция находится в центре экрана черепашки. Если вам когда-нибудь понадобится их узнать, получите x-y координаты черепашки с помощью:8485```python86pos()87```8889Дом находится в `(0, 0)`.9091И через некоторое время, вероятно, будет полезно очистить окно, чтобы начать заново:9293```python94clearscreen()95```9697### Создание алгоритмических узоров9899Используя циклы, можно построить геометрические узоры:100101```python102for steps in range(100):103 for c in ('blue', 'red', 'green'):104 color(c)105 forward(steps)106 right(30)107```108109– которые, конечно, ограничены только воображением!110111Нарисуем звезду в верхней части этой страницы. Линии – красные, заливка – жёлтая:112113```python114color('red')115fillcolor('yellow')116```117118Так же, как `up()` и `down()` определяют, будут ли рисоваться линии, заливку можно включать и выключать:119120```python121begin_fill()122```123124Далее создадим цикл:125126```python127while True:128 forward(200)129 left(170)130 if abs(pos()) < 1:131 break132```133134`abs(pos()) < 1` – хороший способ узнать, когда черепашка вернулась в исходное положение.135136Наконец, завершите заливку:137138```python139end_fill()140```141142(Обратите внимание: заливка фактически происходит только после команды `end_fill()`.)143144## Как…145146В этом разделе рассматриваются некоторые типичные варианты использования черепашьей графики и подходы к работе с ней.147148### Начать как можно быстрее149150Одно из удовольствий черепашьей графики – мгновенная визуальная обратная связь от простых команд. Это отличный способ познакомить детей с идеями программирования с минимальными усилиями (конечно, не только детей).151152Модуль turtle делает это возможным, предоставляя всю базовую функциональность в виде функций, доступных через `from turtle import *`. В [руководстве по черепашьей графике](https://python-all.ru/3.12/library/turtle.html#turtle-tutorial) описан этот подход.153154Стоит отметить, что многие команды черепашки имеют ещё более краткие эквиваленты, например `fd()` для [`forward()`](https://python-all.ru/3.12/library/turtle.html#turtle.forward). Они особенно полезны при работе с теми, кто ещё не освоил набор текста.155156> Для работы черепашьей графики необходимо, чтобы в системе был установлен [`Tk interface package`](https://python-all.ru/3.12/library/tkinter.html#module-tkinter). Имейте в виду, что это не всегда тривиально, поэтому проверьте заранее, если планируете использовать черепашью графику с учеником.157158### Использовать пространство имён модуля `turtle`159160Использовать `from turtle import *` удобно, но учтите: он импортирует довольно большое количество объектов, и если вы занимаетесь чем-то, кроме черепашьей графики, возникает риск конфликта имён (особенно если вы используете черепашью графику в скрипте, где могут импортироваться другие модули).161162Решение – использовать `import turtle`: `fd()` становится `turtle.fd()`, `width()` становится `turtle.width()` и так далее. (Если постоянно набирать «turtle» утомительно, используйте, например, `import turtle as t`.)163164### Использовать черепашью графику в скрипте165166Рекомендуется использовать пространство имён модуля `turtle`, как описано непосредственно выше, например:167168```python169import turtle as t170from random import random171172for i in range(100):173 steps = int(random() * 100)174 angle = int(random() * 360)175 t.right(angle)176 t.fd(steps)177```178179Однако требуется ещё один шаг: как только скрипт завершится, Python закроет окно черепашки. Добавьте:180181```python182t.mainloop()183```184185в конец скрипта. Теперь скрипт будет ждать завершения и не завершится, пока его не прервут, например, закрыв окно черепашьей графики.186187### Использовать объектно-ориентированную черепашью графику188189> **См. также**190>191> [Объяснение объектно-ориентированного интерфейса](https://python-all.ru/3.12/library/turtle.html#turtle-explanation)192193За исключением самых простых вводных целей или быстрого опробования, гораздо более привычно и эффективно использовать объектно-ориентированный подход к черепашьей графике. Например, это позволяет одновременно разместить на экране несколько черепашек.194195В этом подходе различные команды черепашки являются методами объектов (в основном объектов `Turtle`). *Можно* использовать объектно-ориентированный подход в оболочке, но чаще это делают в Python-скрипте.196197Тогда приведённый выше пример становится таким:198199```python200from turtle import Turtle201from random import random202203t = Turtle()204for i in range(100):205 steps = int(random() * 100)206 angle = int(random() * 360)207 t.right(angle)208 t.fd(steps)209210t.screen.mainloop()211```212213Обратите внимание на последнюю строку. `t.screen` – это экземпляр [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen), на котором существует экземпляр Turtle; он создаётся автоматически вместе с черепашкой.214215Экран черепашки можно настроить, например:216217```python218t.screen.title('Object-oriented turtle demo')219t.screen.bgcolor("orange")220```221222## Справочник по черепашьей графике223224> **Примечание**225>226> В следующей документации приведён список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент *self*, который здесь опущен.227228### Методы черепахи229230**Движение черепахи**231232**Перемещение и рисование**233234[`forward()`](https://python-all.ru/3.12/library/turtle.html#turtle.forward)235236|237238[`fd()`](https://python-all.ru/3.12/library/turtle.html#turtle.fd)239240[`backward()`](https://python-all.ru/3.12/library/turtle.html#turtle.backward)241242|243244[`bk()`](https://python-all.ru/3.12/library/turtle.html#turtle.bk)245246|247248[`back()`](https://python-all.ru/3.12/library/turtle.html#turtle.back)249250[`right()`](https://python-all.ru/3.12/library/turtle.html#turtle.right)251252|253254[`rt()`](https://python-all.ru/3.12/library/turtle.html#turtle.rt)255256[`left()`](https://python-all.ru/3.12/library/turtle.html#turtle.left)257258|259260[`lt()`](https://python-all.ru/3.12/library/turtle.html#turtle.lt)261262[`goto()`](https://python-all.ru/3.12/library/turtle.html#turtle.goto)263264|265266[`setpos()`](https://python-all.ru/3.12/library/turtle.html#turtle.setpos)267268|269270[`setposition()`](https://python-all.ru/3.12/library/turtle.html#turtle.setposition)271272[`teleport()`](https://python-all.ru/3.12/library/turtle.html#turtle.teleport)273274[`setx()`](https://python-all.ru/3.12/library/turtle.html#turtle.setx)275276[`sety()`](https://python-all.ru/3.12/library/turtle.html#turtle.sety)277278[`setheading()`](https://python-all.ru/3.12/library/turtle.html#turtle.setheading)279280|281282[`seth()`](https://python-all.ru/3.12/library/turtle.html#turtle.seth)283284[`home()`](https://python-all.ru/3.12/library/turtle.html#turtle.home)285286[`circle()`](https://python-all.ru/3.12/library/turtle.html#turtle.circle)287288[`dot()`](https://python-all.ru/3.12/library/turtle.html#turtle.dot)289290[`stamp()`](https://python-all.ru/3.12/library/turtle.html#turtle.stamp)291292[`clearstamp()`](https://python-all.ru/3.12/library/turtle.html#turtle.clearstamp)293294[`clearstamps()`](https://python-all.ru/3.12/library/turtle.html#turtle.clearstamps)295296[`undo()`](https://python-all.ru/3.12/library/turtle.html#turtle.undo)297298[`speed()`](https://python-all.ru/3.12/library/turtle.html#turtle.speed)299300**Состояние черепахи**301302[`position()`](https://python-all.ru/3.12/library/turtle.html#turtle.position)303304|305306[`pos()`](https://python-all.ru/3.12/library/turtle.html#turtle.pos)307308[`towards()`](https://python-all.ru/3.12/library/turtle.html#turtle.towards)309310[`xcor()`](https://python-all.ru/3.12/library/turtle.html#turtle.xcor)311312[`ycor()`](https://python-all.ru/3.12/library/turtle.html#turtle.ycor)313314[`heading()`](https://python-all.ru/3.12/library/turtle.html#turtle.heading)315316[`distance()`](https://python-all.ru/3.12/library/turtle.html#turtle.distance)317318**Настройка и измерение**319320[`degrees()`](https://python-all.ru/3.12/library/turtle.html#turtle.degrees)321322[`radians()`](https://python-all.ru/3.12/library/turtle.html#turtle.radians)323324**Управление пером**325326**Состояние рисования**327328[`pendown()`](https://python-all.ru/3.12/library/turtle.html#turtle.pendown)329330|331332[`pd()`](https://python-all.ru/3.12/library/turtle.html#turtle.pd)333334|335336[`down()`](https://python-all.ru/3.12/library/turtle.html#turtle.down)337338[`penup()`](https://python-all.ru/3.12/library/turtle.html#turtle.penup)339340|341342[`pu()`](https://python-all.ru/3.12/library/turtle.html#turtle.pu)343344|345346[`up()`](https://python-all.ru/3.12/library/turtle.html#turtle.up)347348[`pensize()`](https://python-all.ru/3.12/library/turtle.html#turtle.pensize)349350|351352[`width()`](https://python-all.ru/3.12/library/turtle.html#turtle.width)353354[`pen()`](https://python-all.ru/3.12/library/turtle.html#turtle.pen)355356[`isdown()`](https://python-all.ru/3.12/library/turtle.html#turtle.isdown)357358**Управление цветом**359360[`color()`](https://python-all.ru/3.12/library/turtle.html#turtle.color)361362[`pencolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.pencolor)363364[`fillcolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.fillcolor)365366**Заливка**367368[`filling()`](https://python-all.ru/3.12/library/turtle.html#turtle.filling)369370[`begin_fill()`](https://python-all.ru/3.12/library/turtle.html#turtle.begin_fill)371372[`end_fill()`](https://python-all.ru/3.12/library/turtle.html#turtle.end_fill)373374**Дополнительное управление рисованием**375376[`reset()`](https://python-all.ru/3.12/library/turtle.html#turtle.reset)377378[`clear()`](https://python-all.ru/3.12/library/turtle.html#turtle.clear)379380[`write()`](https://python-all.ru/3.12/library/turtle.html#turtle.write)381382**Состояние черепахи**383384**Видимость**385386[`showturtle()`](https://python-all.ru/3.12/library/turtle.html#turtle.showturtle)387388|389390[`st()`](https://python-all.ru/3.12/library/turtle.html#turtle.st)391392[`hideturtle()`](https://python-all.ru/3.12/library/turtle.html#turtle.hideturtle)393394|395396[`ht()`](https://python-all.ru/3.12/library/turtle.html#turtle.ht)397398[`isvisible()`](https://python-all.ru/3.12/library/turtle.html#turtle.isvisible)399400**Внешний вид**401402[`shape()`](https://python-all.ru/3.12/library/turtle.html#turtle.shape)403404[`resizemode()`](https://python-all.ru/3.12/library/turtle.html#turtle.resizemode)405406[`shapesize()`](https://python-all.ru/3.12/library/turtle.html#turtle.shapesize)407408|409410[`turtlesize()`](https://python-all.ru/3.12/library/turtle.html#turtle.turtlesize)411412[`shearfactor()`](https://python-all.ru/3.12/library/turtle.html#turtle.shearfactor)413414[`settiltangle()`](https://python-all.ru/3.12/library/turtle.html#turtle.settiltangle)415416[`tiltangle()`](https://python-all.ru/3.12/library/turtle.html#turtle.tiltangle)417418[`tilt()`](https://python-all.ru/3.12/library/turtle.html#turtle.tilt)419420[`shapetransform()`](https://python-all.ru/3.12/library/turtle.html#turtle.shapetransform)421422[`get_shapepoly()`](https://python-all.ru/3.12/library/turtle.html#turtle.get_shapepoly)423424**Использование событий**425426[`onclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.onclick)427428[`onrelease()`](https://python-all.ru/3.12/library/turtle.html#turtle.onrelease)429430[`ondrag()`](https://python-all.ru/3.12/library/turtle.html#turtle.ondrag)431432**Специальные методы черепахи**433434[`begin_poly()`](https://python-all.ru/3.12/library/turtle.html#turtle.begin_poly)435436[`end_poly()`](https://python-all.ru/3.12/library/turtle.html#turtle.end_poly)437438[`get_poly()`](https://python-all.ru/3.12/library/turtle.html#turtle.get_poly)439440[`clone()`](https://python-all.ru/3.12/library/turtle.html#turtle.clone)441442[`getturtle()`](https://python-all.ru/3.12/library/turtle.html#turtle.getturtle)443444|445446[`getpen()`](https://python-all.ru/3.12/library/turtle.html#turtle.getpen)447448[`getscreen()`](https://python-all.ru/3.12/library/turtle.html#turtle.getscreen)449450[`setundobuffer()`](https://python-all.ru/3.12/library/turtle.html#turtle.setundobuffer)451452[`undobufferentries()`](https://python-all.ru/3.12/library/turtle.html#turtle.undobufferentries)453454### Методы TurtleScreen/Screen455456**Управление окном**457458[`bgcolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.bgcolor)459460[`bgpic()`](https://python-all.ru/3.12/library/turtle.html#turtle.bgpic)461462[`clearscreen()`](https://python-all.ru/3.12/library/turtle.html#turtle.clearscreen)463464[`resetscreen()`](https://python-all.ru/3.12/library/turtle.html#turtle.resetscreen)465466[`screensize()`](https://python-all.ru/3.12/library/turtle.html#turtle.screensize)467468[`setworldcoordinates()`](https://python-all.ru/3.12/library/turtle.html#turtle.setworldcoordinates)469470**Управление анимацией**471472[`delay()`](https://python-all.ru/3.12/library/turtle.html#turtle.delay)473474[`tracer()`](https://python-all.ru/3.12/library/turtle.html#turtle.tracer)475476[`update()`](https://python-all.ru/3.12/library/turtle.html#turtle.update)477478**Использование событий экрана**479480[`listen()`](https://python-all.ru/3.12/library/turtle.html#turtle.listen)481482[`onkey()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkey)483484|485486[`onkeyrelease()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkeyrelease)487488[`onkeypress()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkeypress)489490[`onclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.onclick)491492|493494[`onscreenclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.onscreenclick)495496[`ontimer()`](https://python-all.ru/3.12/library/turtle.html#turtle.ontimer)497498[`mainloop()`](https://python-all.ru/3.12/library/turtle.html#turtle.mainloop)499500|501502[`done()`](https://python-all.ru/3.12/library/turtle.html#turtle.done)503504**Настройки и специальные методы**505506[`mode()`](https://python-all.ru/3.12/library/turtle.html#turtle.mode)507508[`colormode()`](https://python-all.ru/3.12/library/turtle.html#turtle.colormode)509510[`getcanvas()`](https://python-all.ru/3.12/library/turtle.html#turtle.getcanvas)511512[`getshapes()`](https://python-all.ru/3.12/library/turtle.html#turtle.getshapes)513514[`register_shape()`](https://python-all.ru/3.12/library/turtle.html#turtle.register_shape)515516|517518[`addshape()`](https://python-all.ru/3.12/library/turtle.html#turtle.addshape)519520[`turtles()`](https://python-all.ru/3.12/library/turtle.html#turtle.turtles)521522[`window_height()`](https://python-all.ru/3.12/library/turtle.html#turtle.window_height)523524[`window_width()`](https://python-all.ru/3.12/library/turtle.html#turtle.window_width)525526**Методы ввода**527528[`textinput()`](https://python-all.ru/3.12/library/turtle.html#turtle.textinput)529530[`numinput()`](https://python-all.ru/3.12/library/turtle.html#turtle.numinput)531532**Методы, специфичные для Screen**533534[`bye()`](https://python-all.ru/3.12/library/turtle.html#turtle.bye)535536[`exitonclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.exitonclick)537538[`setup()`](https://python-all.ru/3.12/library/turtle.html#turtle.setup)539540[`title()`](https://python-all.ru/3.12/library/turtle.html#turtle.title)541542## Методы RawTurtle/Turtle и соответствующие функции543544Большинство примеров в этом разделе ссылаются на экземпляр Turtle с именем `turtle`.545546### Движение черепахи547548#### `turtle.forward(distance)`549550#### `turtle.fd(distance)`551552**Параметры:**553554**distance** – число (целое или с плавающей запятой)555556Перемещает черепаху вперед на указанное *distance*, в направлении, в котором черепаха смотрит.557558```pycon559>>> turtle.position()560(0.00,0.00)561>>> turtle.forward(25)562>>> turtle.position()563(25.00,0.00)564>>> turtle.forward(-75)565>>> turtle.position()566(-50.00,0.00)567```568569#### `turtle.back(distance)`570571#### `turtle.bk(distance)`572573#### `turtle.backward(distance)`574575**Параметры:**576577**distance** – число578579Перемещает черепаху назад на *расстояние*, противоположно направлению, в котором черепаха смотрит. Направление черепахи не меняется.580581```pycon582>>> turtle.position()583(0.00,0.00)584>>> turtle.backward(30)585>>> turtle.position()586(-30.00,0.00)587```588589#### `turtle.right(angle)`590591#### `turtle.rt(angle)`592593**Параметры:**594595**angle** – число (целое или с плавающей запятой)596597Поворачивает черепаху вправо на *angle* единиц. (По умолчанию единицы – градусы, но их можно изменить с помощью функций [`degrees()`](https://python-all.ru/3.12/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.12/library/turtle.html#turtle.radians).) Направление поворота зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.12/library/turtle.html#turtle.mode).598599```pycon600>>> turtle.heading()60122.0602>>> turtle.right(45)603>>> turtle.heading()604337.0605```606607#### `turtle.left(angle)`608609#### `turtle.lt(angle)`610611**Параметры:**612613**angle** – число (целое или с плавающей запятой)614615Поворачивает черепаху влево на *angle* единиц. (По умолчанию единицы – градусы, но их можно изменить с помощью функций [`degrees()`](https://python-all.ru/3.12/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.12/library/turtle.html#turtle.radians).) Направление поворота зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.12/library/turtle.html#turtle.mode).616617```pycon618>>> turtle.heading()61922.0620>>> turtle.left(45)621>>> turtle.heading()62267.0623```624625#### `turtle.goto(x, y=None)`626627#### `turtle.setpos(x, y=None)`628629#### `turtle.setposition(x, y=None)`630631**Параметры:**632633- **x** – число или пара/вектор чисел634- **y** – число или `None`635636Если *y* равно `None`, то *x* должно быть парой координат или [`Vec2D`](https://python-all.ru/3.12/library/turtle.html#turtle.Vec2D) (например, как возвращается функцией [`pos()`](https://python-all.ru/3.12/library/turtle.html#turtle.pos)).637638Перемещает черепаху в абсолютную позицию. Если перо опущено, рисует линию. Направление черепахи не меняется.639640```pycon641>>> tp = turtle.pos()642>>> tp643(0.00,0.00)644>>> turtle.setpos(60,30)645>>> turtle.pos()646(60.00,30.00)647>>> turtle.setpos((20,80))648>>> turtle.pos()649(20.00,80.00)650>>> turtle.setpos(tp)651>>> turtle.pos()652(0.00,0.00)653```654655#### `turtle.teleport(x, y=None, *, fill_gap=False)`656657**Параметры:**658659- **x** – число или `None`660- **y** – число или `None`661- **fill\_gap** – логическое значение662663Перемещает черепаху в абсолютную позицию. В отличие от goto(x, y), линия не рисуется. Направление черепахи не меняется. Если в данный момент выполняется заливка, многоугольник(и), из которого телепортировали, будут залиты после выхода, и заливка начнется снова после телепортации. Это можно отключить с помощью fill\_gap=True, что делает воображаемую линию, пройденную во время телепортации, барьером заливки, как в goto(x, y).664665```pycon666>>> tp = turtle.pos()667>>> tp668(0.00,0.00)669>>> turtle.teleport(60)670>>> turtle.pos()671(60.00,0.00)672>>> turtle.teleport(y=10)673>>> turtle.pos()674(60.00,10.00)675>>> turtle.teleport(20, 30)676>>> turtle.pos()677(20.00,30.00)678```679680Добавлено в версии 3.12.681682#### `turtle.setx(x)`683684**Параметры:**685686**x** – число (целое или с плавающей запятой)687688Устанавливает первую координату черепахи в *x*, вторая координата остается без изменений.689690```pycon691>>> turtle.position()692(0.00,240.00)693>>> turtle.setx(10)694>>> turtle.position()695(10.00,240.00)696```697698#### `turtle.sety(y)`699700**Параметры:**701702**y** – число (целое или с плавающей запятой)703704Устанавливает вторую координату черепахи в *y*, первая координата остается без изменений.705706```pycon707>>> turtle.position()708(0.00,40.00)709>>> turtle.sety(-10)710>>> turtle.position()711(0.00,-10.00)712```713714#### `turtle.setheading(to_angle)`715716#### `turtle.seth(to_angle)`717718**Параметры:**719720**to\_angle** – число (целое или с плавающей запятой)721722Устанавливает направление черепахи в *to\_angle*. Вот некоторые распространенные направления в градусах:723724| стандартный режим | режим Logo |725| --- | --- |726| 0 – восток | 0 – север |727| 90 – север | 90 – восток |728| 180 – запад | 180 – юг |729| 270 – юг | 270 – запад |730731```pycon732>>> turtle.setheading(90)733>>> turtle.heading()73490.0735```736737#### `turtle.home()`738739Перемещает черепаху в начало координат – (0,0) – и устанавливает её направление в начальную ориентацию (зависит от режима, см. [`mode()`](https://python-all.ru/3.12/library/turtle.html#turtle.mode)).740741```pycon742>>> turtle.heading()74390.0744>>> turtle.position()745(0.00,-10.00)746>>> turtle.home()747>>> turtle.position()748(0.00,0.00)749>>> turtle.heading()7500.0751```752753#### `turtle.circle(radius, extent=None, steps=None)`754755**Параметры:**756757- **radius** – число758- **extent** – число (или `None`)759- **steps** – целое число (или `None`)760761Рисует окружность с заданным *radius*. Центр находится на *radius* единиц левее черепахи; *extent* – угол – определяет, какая часть окружности рисуется. Если *extent* не указан, рисуется вся окружность. Если *extent* не является полной окружностью, одна из конечных точек дуги – это текущее положение пера. Дуга рисуется против часовой стрелки, если *radius* положительный, и по часовой стрелке в противном случае. В конце направление черепахи изменяется на величину *extent*.762763Поскольку окружность аппроксимируется вписанным правильным многоугольником, *steps* определяет количество используемых шагов. Если не указано, вычисляется автоматически. Может использоваться для рисования правильных многоугольников.764765```pycon766>>> turtle.home()767>>> turtle.position()768(0.00,0.00)769>>> turtle.heading()7700.0771>>> turtle.circle(50)772>>> turtle.position()773(-0.00,0.00)774>>> turtle.heading()7750.0776>>> turtle.circle(120, 180) # нарисовать полуокружность777>>> turtle.position()778(0.00,240.00)779>>> turtle.heading()780180.0781```782783#### `turtle.dot(size=None, *color)`784785**Параметры:**786787- **size** – целое число \>= 1 (если указано)788- **color** – строка цвета или кортеж числовых цветов789790Рисует круглую точку диаметром *size*, используя *color*. Если *size* не указан, используется максимальное из pensize+4 и 2\*pensize.791792```pycon793>>> turtle.home()794>>> turtle.dot()795>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)796>>> turtle.position()797(100.00,-0.00)798>>> turtle.heading()7990.0800```801802#### `turtle.stamp()`803804Наносит копию формы черепахи на холст в текущей позиции черепахи. Возвращает stamp\_id для этой печати, который можно использовать для её удаления вызовом `clearstamp(stamp_id)`.805806```pycon807>>> turtle.color("blue")808>>> stamp_id = turtle.stamp()809>>> turtle.fd(50)810```811812#### `turtle.clearstamp(stampid)`813814**Параметры:**815816**stampid** – целое число, должно быть возвращаемым значением предыдущего вызова [`stamp()`](https://python-all.ru/3.12/library/turtle.html#turtle.stamp)817818Удаляет печать с заданным *stampid*.819820```pycon821>>> turtle.position()822(150.00,-0.00)823>>> turtle.color("blue")824>>> astamp = turtle.stamp()825>>> turtle.fd(50)826>>> turtle.position()827(200.00,-0.00)828>>> turtle.clearstamp(astamp)829>>> turtle.position()830(200.00,-0.00)831```832833#### `turtle.clearstamps(n=None)`834835**Параметры:**836837**n** – целое число (или `None`)838839Удаляет все или первые/последние *n* отпечатков черепашки. Если *n* равно `None`, удаляет все отпечатки, если *n* \> 0, удаляет первые *n* отпечатков, а если *n* \< 0, удаляет последние *n* отпечатков.840841```pycon842>>> for i in range(8):843... unused_stamp_id = turtle.stamp()844... turtle.fd(30)845>>> turtle.clearstamps(2)846>>> turtle.clearstamps(-2)847>>> turtle.clearstamps()848```849850#### `turtle.undo()`851852Отменяет (повторно) последнее(ие) действие(я) черепашки. Количество доступных действий отмены определяется размером буфера отмены.853854```pycon855>>> for i in range(4):856... turtle.fd(50); turtle.lt(80)857...858>>> for i in range(8):859... turtle.undo()860```861862#### `turtle.speed(speed=None)`863864**Параметры:**865866**speed** – целое число в диапазоне 0..10 или speedstring (см. ниже).867868Устанавливает скорость черепашки в целое значение от 0 до 10. Если аргумент не указан, возвращает текущую скорость.869870Если входное значение – число больше 10 или меньше 0.5, скорость устанавливается в 0. Speedstrings сопоставляются со значениями скорости следующим образом:871872- «самый быстрый»: 0873- «быстрый»: 10874- “обычная”: 6875- “медленная”: 3876- “самая медленная”: 1877878Скорости от 1 до 10 обеспечивают всё более быструю анимацию рисования линий и поворотов черепашки.879880Внимание: *speed* = 0 означает, что *никакой* анимации не происходит. forward/back заставляют черепашку прыгать, а left/right заставляют черепашку мгновенно поворачиваться.881882```pycon883>>> turtle.speed()8843885>>> turtle.speed('normal')886>>> turtle.speed()8876888>>> turtle.speed(9)889>>> turtle.speed()8909891```892893### Состояние черепашки894895#### `turtle.position()`896897#### `turtle.pos()`898899Возвращает текущее положение черепашки (x,y) (в виде [`Vec2D`](https://python-all.ru/3.12/library/turtle.html#turtle.Vec2D) вектора).900901```pycon902>>> turtle.pos()903(440.00,-0.00)904```905906#### `turtle.towards(x, y=None)`907908**Параметры:**909910- **x** – число или пара/вектор чисел, или экземпляр черепашки911- **y** – число, если *x* – число, иначе `None`912913Возвращает угол между линией от положения черепашки до точки, указанной через (x,y), указанного вектора или другой черепашки. Это зависит от начальной ориентации черепашки, которая зависит от режима – “standard”/“world” или “logo”.914915```pycon916>>> turtle.goto(10, 10)917>>> turtle.towards(0,0)918225.0919```920921#### `turtle.xcor()`922923Возвращает x-координату черепашки.924925```pycon926>>> turtle.home()927>>> turtle.left(50)928>>> turtle.forward(100)929>>> turtle.pos()930(64.28,76.60)931>>> print(round(turtle.xcor(), 5))93264.27876933```934935#### `turtle.ycor()`936937Возвращает y-координату черепашки.938939```pycon940>>> turtle.home()941>>> turtle.left(60)942>>> turtle.forward(100)943>>> print(turtle.pos())944(50.00,86.60)945>>> print(round(turtle.ycor(), 5))94686.60254947```948949#### `turtle.heading()`950951Возвращает текущий курс черепашки (значение зависит от режима черепашки, см. [`mode()`](https://python-all.ru/3.12/library/turtle.html#turtle.mode)).952953```pycon954>>> turtle.home()955>>> turtle.left(67)956>>> turtle.heading()95767.0958```959960#### `turtle.distance(x, y=None)`961962**Параметры:**963964- **x** – число или пара/вектор чисел, или экземпляр черепашки965- **y** – число, если *x* – число, иначе `None`966967Возвращает расстояние от черепашки до точки (x,y), указанного вектора или указанной другой черепашки в единицах шага черепашки.968969```pycon970>>> turtle.home()971>>> turtle.distance(30,40)97250.0973>>> turtle.distance((30,40))97450.0975>>> joe = Turtle()976>>> joe.forward(77)977>>> turtle.distance(joe)97877.0979```980981### Настройки измерения982983#### `turtle.degrees(fullcircle=360.0)`984985**Параметры:**986987**fullcircle** – число988989Устанавливает единицы измерения углов, то есть задаёт количество «градусов» в полном обороте. Значение по умолчанию – 360 градусов.990991```pycon992>>> turtle.home()993>>> turtle.left(90)994>>> turtle.heading()99590.0996997>>> # Изменить единицу измерения угла на град (также известный как гон,998>>> # град, или градиан, и равная 1/100 прямого угла.)999>>> turtle.degrees(400.0)1000>>> turtle.heading()1001100.01002>>> turtle.degrees(360)1003>>> turtle.heading()100490.01005```10061007#### `turtle.radians()`10081009Устанавливает единицы измерения углов в радианах. Эквивалентно `degrees(2*math.pi)`.10101011```pycon1012>>> turtle.home()1013>>> turtle.left(90)1014>>> turtle.heading()101590.01016>>> turtle.radians()1017>>> turtle.heading()10181.57079632679489661019```10201021### Управление пером10221023#### Состояние рисования10241025#### `turtle.pendown()`10261027#### `turtle.pd()`10281029#### `turtle.down()`10301031Опускает перо – рисование при движении.10321033#### `turtle.penup()`10341035#### `turtle.pu()`10361037#### `turtle.up()`10381039Поднимает перо – при движении не рисует.10401041#### `turtle.pensize(width=None)`10421043#### `turtle.width(width=None)`10441045**Параметры:**10461047**width** – положительное число10481049Устанавливает толщину линии в *width* или возвращает её. Если для resizemode установлено «auto» и форма черепашки является многоугольником, этот многоугольник рисуется с такой же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.10501051```pycon1052>>> turtle.pensize()105311054>>> turtle.pensize(10) # отсюда рисуются линии шириной 101055```10561057#### `turtle.pen(pen=None, **pendict)`10581059**Параметры:**10601061- **pen** – словарь, содержащий некоторые или все из перечисленных ниже ключей1062- **pendict** – один или несколько именованных аргументов, использующих перечисленные ниже ключи10631064Возвращает или устанавливает атрибуты пера в виде «словаря пера» со следующими парами ключ/значение:10651066- “отображается”: True/False1067- “перо опущено”: True/False1068- “цвет пера”: строка цвета или кортеж цвета1069- “цвет заливки”: строка цвета или кортеж цвета1070- “размер пера”: положительное число1071- “скорость”: число от 0 до 101072- “режим изменения размера”: “auto” or “user” or “noresize”1073- “коэффициент растяжения”: (положительное число, положительное число)1074- «outline»: положительное число1075- «tilt»: число10761077Этот словарь можно передать аргументом в последующий вызов [`pen()`](https://python-all.ru/3.12/library/turtle.html#turtle.pen), чтобы восстановить предыдущее состояние пера. Кроме того, один или несколько из этих атрибутов можно указать как именованные аргументы. Это позволяет установить несколько атрибутов пера одной инструкцией.10781079```pycon1080>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)1081>>> sorted(turtle.pen().items())1082[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),1083 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),1084 ('shearfactor', 0.0), ('shown', True), ('speed', 9),1085 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]1086>>> penstate=turtle.pen()1087>>> turtle.color("yellow", "")1088>>> turtle.penup()1089>>> sorted(turtle.pen().items())[:3]1090[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]1091>>> turtle.pen(penstate, fillcolor="green")1092>>> sorted(turtle.pen().items())[:3]1093[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]1094```10951096#### `turtle.isdown()`10971098Возвращает `True`, если перо опущено, и `False`, если поднято.10991100```pycon1101>>> turtle.penup()1102>>> turtle.isdown()1103False1104>>> turtle.pendown()1105>>> turtle.isdown()1106True1107```11081109#### Управление цветом11101111#### `turtle.pencolor(*args)`11121113Возвращает или задаёт цвет пера.11141115Допускаются четыре формата ввода:11161117**`pencolor()`**11181119Возвращает текущий pencolor в виде строки спецификации цвета или в виде кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.11201121**`pencolor(colorstring)`**11221123Задаёт цвет пера равным *colorstring*, строке описания цвета Tk, например, `"red"`, `"yellow"` или `"#33cc8c"`.11241125**`pencolor((r, g, b))`**11261127Задаёт цвет пера по цвету RGB, представленному кортежем из *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode, где colormode равен 1.0 или 255 (см. [`colormode()`](https://python-all.ru/3.12/library/turtle.html#turtle.colormode)).11281129**`pencolor(r, g, b)`**11301131Задаёт цвет пера по цвету RGB, заданному *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode.11321133Если форма черепахи (turtleshape) является многоугольником, то контур этого многоугольника рисуется вновь заданным цветом пера.11341135```pycon1136>>> colormode()11371.01138>>> turtle.pencolor()1139'red'1140>>> turtle.pencolor("brown")1141>>> turtle.pencolor()1142'brown'1143>>> tup = (0.2, 0.8, 0.55)1144>>> turtle.pencolor(tup)1145>>> turtle.pencolor()1146(0.2, 0.8, 0.5490196078431373)1147>>> colormode(255)1148>>> turtle.pencolor()1149(51.0, 204.0, 140.0)1150>>> turtle.pencolor('#32c18f')1151>>> turtle.pencolor()1152(50.0, 193.0, 143.0)1153```11541155#### `turtle.fillcolor(*args)`11561157Возвращает или задаёт цвет заливки.11581159Допускаются четыре формата ввода:11601161**`fillcolor()`**11621163Возвращает текущий fillcolor в виде строки спецификации цвета, возможно в формате кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.11641165**`fillcolor(colorstring)`**11661167Задаёт цвет заливки равным *colorstring*, строке описания цвета Tk, например, `"red"`, `"yellow"` или `"#33cc8c"`.11681169**`fillcolor((r, g, b))`**11701171Задаёт цвет заливки по цвету RGB, представленному кортежем из *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode, где colormode равен 1.0 или 255 (см. [`colormode()`](https://python-all.ru/3.12/library/turtle.html#turtle.colormode)).11721173**`fillcolor(r, g, b)`**11741175Задаёт цвет заливки по цвету RGB, заданному *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode.11761177Если форма черепахи (turtleshape) является многоугольником, то внутренняя область этого многоугольника закрашивается вновь заданным цветом заливки.11781179```pycon1180>>> turtle.fillcolor("violet")1181>>> turtle.fillcolor()1182'violet'1183>>> turtle.pencolor()1184(50.0, 193.0, 143.0)1185>>> turtle.fillcolor((50, 193, 143)) # Целые числа, не числа с плавающей точкой1186>>> turtle.fillcolor()1187(50.0, 193.0, 143.0)1188>>> turtle.fillcolor('#ffffff')1189>>> turtle.fillcolor()1190(255.0, 255.0, 255.0)1191```11921193#### `turtle.color(*args)`11941195Возвращает или задаёт цвет пера и цвет заливки.11961197Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:11981199**`color()`**12001201Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или кортежей с описанием цвета, как в [`pencolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.pencolor) и [`fillcolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.fillcolor).12021203**`color(colorstring)`, `color((r,g,b))`, `color(r,g,b)`**12041205Аргументы как в [`pencolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.pencolor); устанавливает и fillcolor, и pencolor в указанное значение.12061207**`color(colorstring1, colorstring2)`, `color((r1,g1,b1), (r2,g2,b2))`**12081209Эквивалентно `pencolor(colorstring1)` и `fillcolor(colorstring2)`, а также аналогично при использовании другого формата ввода.12101211Если форма черепахи – многоугольник, его контур и внутренняя область рисуются новыми установленными цветами.12121213```pycon1214>>> turtle.color("red", "green")1215>>> turtle.color()1216('red', 'green')1217>>> color("#285078", "#a0c8f0")1218>>> color()1219((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))1220```12211222См. также: метод Screen [`colormode()`](https://python-all.ru/3.12/library/turtle.html#turtle.colormode).12231224#### Заливка12251226#### `turtle.filling()`12271228Возвращает состояние заливки (`True`, если заливка активна, иначе `False`).12291230```pycon1231>>> turtle.begin_fill()1232>>> if turtle.filling():1233... turtle.pensize(5)1234... else:1235... turtle.pensize(3)1236```12371238#### `turtle.begin_fill()`12391240Вызывается непосредственно перед рисованием фигуры, которую нужно залить.12411242#### `turtle.end_fill()`12431244Заливает фигуру, нарисованную после последнего вызова [`begin_fill()`](https://python-all.ru/3.12/library/turtle.html#turtle.begin_fill).12451246Будут ли залиты области пересечения для самопересекающихся многоугольников или нескольких фигур, зависит от графической подсистемы операционной системы, типа пересечения и количества пересечений. Например, звезда черепахи выше может быть либо полностью жёлтой, либо содержать белые области.12471248```pycon1249>>> turtle.color("black", "red")1250>>> turtle.begin_fill()1251>>> turtle.circle(80)1252>>> turtle.end_fill()1253```12541255#### Дополнительное управление рисованием12561257#### `turtle.reset()`12581259Удаляет рисунки черепахи с экрана, перемещает черепаху в центр и сбрасывает переменные в значения по умолчанию.12601261```pycon1262>>> turtle.goto(0,-22)1263>>> turtle.left(100)1264>>> turtle.position()1265(0.00,-22.00)1266>>> turtle.heading()1267100.01268>>> turtle.reset()1269>>> turtle.position()1270(0.00,0.00)1271>>> turtle.heading()12720.01273```12741275#### `turtle.clear()`12761277Удаляет рисунки черепахи с экрана. Черепаха не перемещается. Состояние и положение черепахи, а также рисунки других черепах не затрагиваются.12781279#### `turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))`12801281**Параметры:**12821283- **arg** – объект, который будет записан на TurtleScreen.1284- **move** – True/False1285- **align** – одна из строк: «left», «center» или «right».1286- **font** – тройка (имя\_шрифта, размер\_шрифта, тип\_шрифта)12871288Записывает текст (строковое представление *arg*) в текущей позиции черепахи в соответствии с выравниванием *align* («left», «center» или «right») и указанным шрифтом. Если *move* истинно, перо перемещается в правый нижний угол текста. По умолчанию *move* равно `False`.12891290```python1291>>> turtle.write("Home = ", True, align="center")1292>>> turtle.write((0,0), True)1293```12941295### Состояние черепахи12961297#### Видимость12981299#### `turtle.hideturtle()`13001301#### `turtle.ht()`13021303Делает черепаху невидимой. Рекомендуется делать это во время выполнения сложного рисунка, потому что скрытие черепахи заметно ускоряет рисование.13041305```pycon1306>>> turtle.hideturtle()1307```13081309#### `turtle.showturtle()`13101311#### `turtle.st()`13121313Делает черепаху видимой.13141315```pycon1316>>> turtle.showturtle()1317```13181319#### `turtle.isvisible()`13201321Возвращает `True`, если черепаха показана, и `False`, если она скрыта.13221323```python1324>>> turtle.hideturtle()1325>>> turtle.isvisible()1326False1327>>> turtle.showturtle()1328>>> turtle.isvisible()1329True1330```13311332#### Внешний вид13331334#### `turtle.shape(name=None)`13351336**Параметры:**13371338**name** – a string which is a valid shapename13391340Устанавливает форму черепахи как форму с заданным *name* или, если имя не указано, возвращает имя текущей формы. Форма с именем *name* должна существовать в словаре форм TurtleScreen. Изначально доступны следующие многоугольные формы: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классическая». Чтобы узнать, как работать с формами, см. метод Screen [`register_shape()`](https://python-all.ru/3.12/library/turtle.html#turtle.register_shape).13411342```pycon1343>>> turtle.shape()1344'classic'1345>>> turtle.shape("turtle")1346>>> turtle.shape()1347'turtle'1348```13491350#### `turtle.resizemode(rmode=None)`13511352**Параметры:**13531354**rmode** – one of the strings “auto”, “user”, “noresize”13551356Устанавливает режим изменения размера в одно из значений: «авто», «пользователь», «без изменения размера». Если *rmode* не указан, возвращает текущий режим изменения размера. Разные режимы изменения размера имеют следующие эффекты:13571358- “auto”: adapts the appearance of the turtle corresponding to the value of pensize.1359- “user”: adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), which are set by [`shapesize()`](https://python-all.ru/3.12/library/turtle.html#turtle.shapesize).1360- «без изменения размера»: адаптация внешнего вида черепахи не производится.13611362`resizemode("user")` вызывается [`shapesize()`](https://python-all.ru/3.12/library/turtle.html#turtle.shapesize) при использовании с аргументами.13631364```pycon1365>>> turtle.resizemode()1366'noresize'1367>>> turtle.resizemode("auto")1368>>> turtle.resizemode()1369'auto'1370```13711372#### `turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)`13731374#### `turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)`13751376**Параметры:**13771378- **stretch\_wid** – положительное число1379- **stretch\_len** – положительное число1380- **outline** – положительное число13811382Возвращает или задаёт атрибуты пера: коэффициенты растяжения по x/y и/или контур. Устанавливает режим изменения размера в «пользователь». Если и только если режим изменения размера установлен в «пользователь», черепаха будет отображаться растянутой в соответствии с её коэффициентами растяжения: *stretch\_wid* – коэффициент растяжения перпендикулярно её ориентации, *stretch\_len* – коэффициент растяжения в направлении её ориентации, *outline* определяет ширину контура формы.13831384```pycon1385>>> turtle.shapesize()1386(1.0, 1.0, 1)1387>>> turtle.resizemode("user")1388>>> turtle.shapesize(5, 5, 12)1389>>> turtle.shapesize()1390(5, 5, 12)1391>>> turtle.shapesize(outline=8)1392>>> turtle.shapesize()1393(5, 5, 8)1394```13951396#### `turtle.shearfactor(shear=None)`13971398**Параметры:**13991400**shear** – число (необязательно)14011402Set or return the current shearfactor. Shear the turtleshape according to the given shearfactor shear, which is the tangent of the shear angle. Do *not* change the turtle’s heading (direction of movement). If shear is not given: return the current shearfactor, i. e. the tangent of the shear angle, by which lines parallel to the heading of the turtle are sheared.14031404```pycon1405>>> turtle.shape("circle")1406>>> turtle.shapesize(5,2)1407>>> turtle.shearfactor(0.5)1408>>> turtle.shearfactor()14090.51410```14111412#### `turtle.tilt(angle)`14131414**Параметры:**14151416**angle** – a number14171418Повернуть форму черепахи на *angle* от текущего угла наклона, но *не* изменять направление черепахи (направление движения).14191420```pycon1421>>> turtle.reset()1422>>> turtle.shape("circle")1423>>> turtle.shapesize(5,2)1424>>> turtle.tilt(30)1425>>> turtle.fd(50)1426>>> turtle.tilt(30)1427>>> turtle.fd(50)1428```14291430#### `turtle.settiltangle(angle)`14311432**Параметры:**14331434**angle** – a number14351436Поворачивает форму черепашки так, чтобы она указывала в направлении, заданном *angle*, независимо от текущего угла наклона. *Не* меняет курс черепашки (направление движения).14371438```pycon1439>>> turtle.reset()1440>>> turtle.shape("circle")1441>>> turtle.shapesize(5,2)1442>>> turtle.settiltangle(45)1443>>> turtle.fd(50)1444>>> turtle.settiltangle(-45)1445>>> turtle.fd(50)1446```14471448Устарело с версии 3.1.14491450#### `turtle.tiltangle(angle=None)`14511452**Параметры:**14531454**angle** – число (необязательно)14551456Устанавливает или возвращает текущий угол наклона. Если задан угол, поворачивает форму черепахи, чтобы она указывала в направлении, заданном углом, независимо от текущего угла наклона, но *не* изменять направление черепахи (направление движения). Если угол не задан: возвращает текущий угол наклона, то есть угол между ориентацией формы черепахи и направлением черепахи (её направлением движения).14571458```pycon1459>>> turtle.reset()1460>>> turtle.shape("circle")1461>>> turtle.shapesize(5,2)1462>>> turtle.tilt(45)1463>>> turtle.tiltangle()146445.01465```14661467#### `turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)`14681469**Параметры:**14701471- **t11** – число (необязательно)1472- **t12** – число (необязательно)1473- **t21** – число (необязательно)1474- **t12** – число (необязательно)14751476Задаёт или возвращает текущую матрицу преобразования формы черепашки.14771478Если ни один из элементов матрицы не задан, возвращает матрицу преобразования в виде кортежа из 4 элементов. В противном случае задаёт указанные элементы и преобразует форму черепашки согласно матрице, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 \* t22 - t12 \* t21 не должен быть равен нулю, иначе будет вызвана ошибка. Изменяет stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.14791480```pycon1481>>> turtle = Turtle()1482>>> turtle.shape("square")1483>>> turtle.shapesize(4,2)1484>>> turtle.shearfactor(-0.5)1485>>> turtle.shapetransform()1486(4.0, -1.0, -0.0, 2.0)1487```14881489#### `turtle.get_shapepoly()`14901491Возвращает текущий многоугольник формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.14921493```pycon1494>>> turtle.shape("square")1495>>> turtle.shapetransform(4, -1, 0, 2)1496>>> turtle.get_shapepoly()1497((50, -20), (30, 20), (-50, 20), (-30, -20))1498```14991500### Использование событий15011502#### `turtle.onclick(fun, btn=1, add=None)`15031504**Параметры:**15051506- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1507- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1508- **add** – `True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку15091510Привязывает *fun* к событиям щелчка мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются. Пример для анонимной черепашки, т.е. процедурного способа:15111512```pycon1513>>> def turn(x, y):1514... left(180)1515...1516>>> onclick(turn) # Теперь щелчок по черепашке повернёт её.1517>>> onclick(None) # привязка события будет удалена1518```15191520#### `turtle.onrelease(fun, btn=1, add=None)`15211522**Параметры:**15231524- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1525- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1526- **add** – `True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку15271528Привязывает *fun* к событиям отпускания кнопки мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются.15291530```pycon1531>>> class MyTurtle(Turtle):1532... def glow(self,x,y):1533... self.fillcolor("red")1534... def unglow(self,x,y):1535... self.fillcolor("")1536...1537>>> turtle = MyTurtle()1538>>> turtle.onclick(turtle.glow) # нажатие на черепашку меняет цвет заливки на красный,1539>>> turtle.onrelease(turtle.unglow) # отпускание делает его прозрачным.1540```15411542#### `turtle.ondrag(fun, btn=1, add=None)`15431544**Параметры:**15451546- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1547- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1548- **add** – `True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку15491550Привязывает *fun* к событиям перемещения мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются.15511552Примечание: Каждая последовательность событий перемещения мыши на черепашке предваряется событием щелчка мыши на этой черепашке.15531554```pycon1555>>> turtle.ondrag(turtle.goto)1556```15571558После этого щелчок и перетаскивание черепашки будет перемещать её по экрану, создавая рисунки от руки (если перо опущено).15591560### Специальные методы черепашки15611562#### `turtle.begin_poly()`15631564Начинает запись вершин многоугольника. Текущая позиция черепашки является первой вершиной многоугольника.15651566#### `turtle.end_poly()`15671568Остановить запись вершин многоугольника. Текущая позиция черепашки – последняя вершина многоугольника. Она будет соединена с первой вершиной.15691570#### `turtle.get_poly()`15711572Возвращает последний записанный многоугольник.15731574```pycon1575>>> turtle.home()1576>>> turtle.begin_poly()1577>>> turtle.fd(100)1578>>> turtle.left(20)1579>>> turtle.fd(30)1580>>> turtle.left(60)1581>>> turtle.fd(50)1582>>> turtle.end_poly()1583>>> p = turtle.get_poly()1584>>> register_shape("myFavouriteShape", p)1585```15861587#### `turtle.clone()`15881589Создаёт и возвращает клон черепашки с теми же координатами, направлением и свойствами черепашки.15901591```pycon1592>>> mick = Turtle()1593>>> joe = mick.clone()1594```15951596#### `turtle.getturtle()`15971598#### `turtle.getpen()`15991600Возвращает сам объект Turtle. Единственное разумное применение – как функция для возврата «анонимной черепашки»:16011602```pycon1603>>> pet = getturtle()1604>>> pet.fd(50)1605>>> pet1606<turtle.Turtle object at 0x...>1607```16081609#### `turtle.getscreen()`16101611Возвращает объект [`TurtleScreen`](https://python-all.ru/3.12/library/turtle.html#turtle.TurtleScreen), на котором черепашка рисует. Затем для этого объекта можно вызывать методы TurtleScreen.16121613```pycon1614>>> ts = turtle.getscreen()1615>>> ts1616<turtle._Screen object at 0x...>1617>>> ts.bgcolor("pink")1618```16191620#### `turtle.setundobuffer(size)`16211622**Параметры:**16231624**size** – целое число или `None`16251626Устанавливает или отключает буфер отмены. Если *size* – целое число, создаётся пустой буфер отмены указанного размера. *size* задаёт максимальное количество действий черепашки, которые можно отменить с помощью метода/функции [`undo()`](https://python-all.ru/3.12/library/turtle.html#turtle.undo). Если *size* равно `None`, буфер отмены отключается.16271628```pycon1629>>> turtle.setundobuffer(42)1630```16311632#### `turtle.undobufferentries()`16331634Возвращает количество записей в буфере отмены.16351636```pycon1637>>> while undobufferentries():1638... undo()1639```16401641### Составные фигуры16421643Для использования составных фигур черепашки, состоящих из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс [`Shape`](https://python-all.ru/3.12/library/turtle.html#turtle.Shape), как описано ниже:164416451. Создаёт пустой объект Shape типа «compound».16462. Добавьте в этот объект необходимое количество компонентов с помощью метода [`addcomponent()`](https://python-all.ru/3.12/library/turtle.html#turtle.Shape.addcomponent).16471648 Например:16491650 ```pycon1651 >>> s = Shape("compound")1652 >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))1653 >>> s.addcomponent(poly1, "red", "blue")1654 >>> poly2 = ((0,0),(10,-5),(-10,-5))1655 >>> s.addcomponent(poly2, "blue", "red")1656 ```16573. Теперь добавьте Shape в список фигур экрана и используйте его:16581659 ```pycon1660 >>> register_shape("myshape", s)1661 >>> shape("myshape")1662 ```16631664> **Примечание**1665>1666> Класс [`Shape`](https://python-all.ru/3.12/library/turtle.html#turtle.Shape) используется внутри метода [`register_shape()`](https://python-all.ru/3.12/library/turtle.html#turtle.register_shape) разными способами. Разработчику приложения приходится иметь дело с классом Shape *только* при использовании составных фигур, как показано выше!16671668## Методы TurtleScreen/Screen и соответствующие функции16691670Большинство примеров в этом разделе относятся к экземпляру TurtleScreen с именем `screen`.16711672### Управление окном16731674#### `turtle.bgcolor(*args)`16751676**Параметры:**16771678**args** – строка цвета, три числа в диапазоне от 0 до colormode или кортеж из трёх таких чисел.16791680Устанавливает или возвращает цвет фона экрана TurtleScreen.16811682```pycon1683>>> screen.bgcolor("orange")1684>>> screen.bgcolor()1685'orange'1686>>> screen.bgcolor("#800080")1687>>> screen.bgcolor()1688(128.0, 0.0, 128.0)1689```16901691#### `turtle.bgpic(picname=None)`16921693**Параметры:**16941695**picname** – строка, имя gif-файла или `"nopic"`, или `None`16961697Устанавливает фоновое изображение или возвращает имя текущего фонового изображения. Если *picname* – имя файла, устанавливает соответствующее изображение как фон. Если *picname* равно `"nopic"`, удаляет фоновое изображение, если оно есть. Если *picname* равно `None`, возвращает имя файла текущего фонового изображения.16981699```python1700>>> screen.bgpic()1701'nopic'1702>>> screen.bgpic("landscape.gif")1703>>> screen.bgpic()1704"landscape.gif"1705```17061707#### `turtle.clear()`17081709> **Примечание**1710>1711> Этот метод TurtleScreen доступен как глобальная функция только под именем `clearscreen`. Глобальная функция `clear` – другая, производная от метода Turtle `clear`.17121713#### `turtle.clearscreen()`17141715Удаляет все рисунки и всех черепах с TurtleScreen. Сбрасывает теперь пустой TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязок событий и с включённой трассировкой.17161717#### `turtle.reset()`17181719> **Примечание**1720>1721> Этот метод TurtleScreen доступен как глобальная функция только под именем `resetscreen`. Глобальная функция `reset` – это другая, производная от метода Turtle `reset`.17221723#### `turtle.resetscreen()`17241725Сбрасывает всех черепах на экране в исходное состояние.17261727#### `turtle.screensize(canvwidth=None, canvheight=None, bg=None)`17281729**Параметры:**17301731- **canvwidth** – положительное целое, новая ширина холста в пикселях1732- **canvheight** – положительное целое, новая высота холста в пикселях1733- **bg** – строка цвета или кортеж цвета, новый цвет фона17341735Если аргументы не переданы, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором рисуют черепахи. Не изменяет окно рисования. Для просмотра скрытых частей холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.17361737```python1738>>> screen.screensize()1739(400, 300)1740>>> screen.screensize(2000,1500)1741>>> screen.screensize()1742(2000, 1500)1743```17441745например, для поиска случайно сбежавшей черепахи ;-)17461747#### `turtle.setworldcoordinates(llx, lly, urx, ury)`17481749**Параметры:**17501751- **llx** – число, x-координата левого нижнего угла холста1752- **lly** – число, y-координата левого нижнего угла холста1753- **urx** – число, x-координата правого верхнего угла холста1754- **ury** – число, y-координата правого верхнего угла холста17551756Устанавливает пользовательскую систему координат и при необходимости переключается в режим «world». Это выполняет `screen.reset()`. Если режим «world» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.17571758**ВНИМАНИЕ**: в пользовательских системах координат углы могут отображаться искажёнными.17591760```pycon1761>>> screen.reset()1762>>> screen.setworldcoordinates(-50,-7.5,50,7.5)1763>>> for _ in range(72):1764... left(10)1765...1766>>> for _ in range(8):1767... left(45); fd(2) # правильный восьмиугольник1768```17691770### Управление анимацией17711772#### `turtle.delay(delay=None)`17731774**Параметры:**17751776**delay** – положительное целое17771778Устанавливает или возвращает задержку *delay* рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.17791780Необязательный аргумент:17811782```pycon1783>>> screen.delay()1784101785>>> screen.delay(5)1786>>> screen.delay()178751788```17891790#### `turtle.tracer(n=None, delay=None)`17911792**Параметры:**17931794- **n** – неотрицательное целое число1795- **delay** – неотрицательное целое число17961797Включает или выключает анимацию черепашки и устанавливает задержку для обновления рисунков. Если задан *n*, то реально выполняется только каждое n-е обычное обновление экрана. (Может использоваться для ускорения рисования сложной графики.) При вызове без аргументов возвращает текущее сохранённое значение n. Второй аргумент задаёт значение задержки (см. [`delay()`](https://python-all.ru/3.12/library/turtle.html#turtle.delay)).17981799```pycon1800>>> screen.tracer(8, 25)1801>>> dist = 21802>>> for i in range(200):1803... fd(dist)1804... rt(90)1805... dist += 21806```18071808#### `turtle.update()`18091810Выполняет обновление TurtleScreen. Используется, когда tracer выключен.18111812См. также метод [`speed()`](https://python-all.ru/3.12/library/turtle.html#turtle.speed) RawTurtle/Turtle.18131814### Использование событий экрана18151816#### `turtle.listen(xdummy=None, ydummy=None)`18171818Устанавливает фокус на TurtleScreen (для сбора событий клавиш). Фиктивные аргументы предусмотрены, чтобы можно было передать [`listen()`](https://python-all.ru/3.12/library/turtle.html#turtle.listen) методу onclick.18191820#### `turtle.onkey(fun, key)`18211822#### `turtle.onkeyrelease(fun, key)`18231824**Параметры:**18251826- **fun** – функция без аргументов или `None`1827- **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”)18281829Привязывает *fun* к событию отпускания клавиши key. Если *fun* равен `None`, привязки событий удаляются. Замечание: для регистрации событий клавиш TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.12/library/turtle.html#turtle.listen).)18301831```pycon1832>>> def f():1833... fd(50)1834... lt(60)1835...1836>>> screen.onkey(f, "Up")1837>>> screen.listen()1838```18391840#### `turtle.onkeypress(fun, key=None)`18411842**Параметры:**18431844- **fun** – функция без аргументов или `None`1845- **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”)18461847Привязывает *fun* к событию нажатия клавиши key, если key задан, или к любому событию нажатия клавиши, если key не задан. Замечание: для регистрации событий клавиш TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.12/library/turtle.html#turtle.listen).)18481849```pycon1850>>> def f():1851... fd(50)1852...1853>>> screen.onkey(f, "Up")1854>>> screen.listen()1855```18561857#### `turtle.onclick(fun, btn=1, add=None)`18581859#### `turtle.onscreenclick(fun, btn=1, add=None)`18601861**Параметры:**18621863- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1864- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1865- **add** – `True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку18661867Привязывает *fun* к событиям щелчка мыши на этом экране. Если *fun* равен `None`, существующие привязки удаляются.18681869Пример для экземпляра TurtleScreen с именем `screen` и экземпляра Turtle с именем `turtle`:18701871```pycon1872>>> screen.onclick(turtle.goto) # Последующий щелчок по TurtleScreen заставит1873>>> # черепашку переместиться в точку щелчка.1874>>> screen.onclick(None) # снова удалить привязку события1875```18761877> **Примечание**1878>1879> Этот метод TurtleScreen доступен как глобальная функция только под именем `onscreenclick`. Глобальная функция `onclick` – это другая, производная от метода Turtle `onclick`.18801881#### `turtle.ontimer(fun, t=0)`18821883**Параметры:**18841885- **fun** – функция без аргументов1886- **t** – число \>= 018871888Устанавливает таймер, который вызывает *fun* через *t* миллисекунд.18891890```pycon1891>>> running = True1892>>> def f():1893... if running:1894... fd(50)1895... lt(60)1896... screen.ontimer(f, 250)1897>>> f() ### заставляет черепашку обходить вокруг1898>>> running = False1899```19001901#### `turtle.mainloop()`19021903#### `turtle.done()`19041905Запускает цикл событий – вызывает функцию mainloop из Tkinter. Должна быть последней инструкцией в программе с черепашьей графикой. Должна *не* использоваться, если скрипт запускается из IDLE в режиме -n (без подпроцесса) – для интерактивного использования черепашьей графики.19061907```python1908>>> screen.mainloop()1909```19101911### Методы ввода19121913#### `turtle.textinput(title, prompt)`19141915**Параметры:**19161917- **title** – строка1918- **prompt** – строка19191920Отображает диалоговое окно для ввода строки. Параметр title – заголовок диалогового окна, prompt – текст, в основном описывающий, какую информацию нужно ввести. Возвращает введённую строку. Если диалог отменён, возвращает `None`.19211922```python1923>>> screen.textinput("NIM", "Name of first player:")1924```19251926#### `turtle.numinput(title, prompt, default=None, minval=None, maxval=None)`19271928**Параметры:**19291930- **title** – строка1931- **prompt** – строка1932- **default** – число (необязательно)1933- **minval** – число (необязательно)1934- **maxval** – число (необязательно)19351936Отображает диалоговое окно для ввода числа. title – заголовок диалогового окна, prompt – текст, в основном описывающий, какую числовую информацию нужно ввести. default – значение по умолчанию, minval – минимальное значение для ввода, maxval – максимальное значение для ввода. Введённое число должно находиться в диапазоне от minval до maxval, если эти значения заданы. Если нет, выводится подсказка, и диалог остаётся открытым для исправления. Возвращает введённое число. Если диалог отменён, возвращает `None`.19371938```python1939>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)1940```19411942### Настройки и специальные методы19431944#### `turtle.mode(mode=None)`19451946**Параметры:**19471948**mode** – одна из строк “standard”, “logo” или “world”19491950Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если режим не задан, возвращается текущий режим.19511952Режим “standard” совместим со старой [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle). Режим “logo” совместим с большинством черепашьих графических средств Logo. Режим “world” использует заданные пользователем «мировые координаты». **Внимание**: в этом режиме углы выглядят искажёнными, если `x/y` коэффициент единицы измерения не равен 1.19531954| Режим | Начальное направление черепахи | положительные углы |1955| --- | --- | --- |1956| “standard” | вправо (восток) | против часовой стрелки |1957| “logo” | вверх (север) | по часовой стрелке |19581959```pycon1960>>> mode("logo") # сбрасывает направление черепашки на север1961>>> mode()1962'logo'1963```19641965#### `turtle.colormode(cmode=None)`19661967**Параметры:**19681969**cmode** – одно из значений 1.0 или 25519701971Возвращает цветовой режим или устанавливает его в 1.0 или 255. Впоследствии значения *r*, *g*, *b* цветовых троек должны находиться в диапазоне от 0 до \*cmode\*.19721973```pycon1974>>> screen.colormode(1)1975>>> turtle.pencolor(240, 160, 80)1976Traceback (most recent call last):1977 ...1978TurtleGraphicsError: bad color sequence: (240, 160, 80)1979>>> screen.colormode()19801.01981>>> screen.colormode(255)1982>>> screen.colormode()19832551984>>> turtle.pencolor(240,160,80)1985```19861987#### `turtle.getcanvas()`19881989Возвращает Canvas данного TurtleScreen. Полезно для тех, кто знает, что делать с Canvas из Tkinter.19901991```pycon1992>>> cv = screen.getcanvas()1993>>> cv1994<turtle.ScrolledCanvas object ...>1995```19961997#### `turtle.getshapes()`19981999Возвращает список названий всех доступных в данный момент форм черепашки.20002001```pycon2002>>> screen.getshapes()2003['arrow', 'blank', 'circle', ..., 'turtle']2004```20052006#### `turtle.register_shape(name, shape=None)`20072008#### `turtle.addshape(name, shape=None)`20092010Эту функцию можно вызвать тремя различными способами:201120121. *name* – это имя gif-файла, а *shape* – это `None`: установите соответствующую форму изображения.20132014 ```python2015 >>> screen.register_shape("turtle.gif")2016 ```20172018 > **Примечание**2019 >2020 > Формы изображений *не* поворачиваются при повороте черепашки, поэтому они не отображают направление черепашки!20212. *name* – произвольная строка, а *shape* – кортеж пар координат: устанавливает соответствующую многоугольную форму.20222023 ```pycon2024 >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))2025 ```20263. *name* – произвольная строка, а *shape* – (составной) объект [`Shape`](https://python-all.ru/3.12/library/turtle.html#turtle.Shape): устанавливает соответствующую составную форму.20272028Добавляет форму черепашки в список форм TurtleScreen. Только зарегистрированные таким образом формы можно использовать, выполнив команду `shape(shapename)`.20292030#### `turtle.turtles()`20312032Возвращает список черепашек на экране.20332034```pycon2035>>> for turtle in screen.turtles():2036... turtle.color("red")2037```20382039#### `turtle.window_height()`20402041Возвращает высоту окна черепашки.20422043```python2044>>> screen.window_height()20454802046```20472048#### `turtle.window_width()`20492050Возвращает ширину окна черепашки.20512052```python2053>>> screen.window_width()20546402055```20562057### Методы, специфичные для Screen, не наследуемые от TurtleScreen20582059#### `turtle.bye()`20602061Закрывает окно графики черепашки.20622063#### `turtle.exitonclick()`20642065Привязывает метод `bye()` к щелчкам мыши на экране.20662067Если значение «using\_IDLE» в словаре конфигурации равно `False` (значение по умолчанию), также запускается главный цикл. Примечание: если используется IDLE с ключом `-n` (без подпроцесса), это значение следует установить в `True` в `turtle.cfg`. В этом случае собственный главный цикл IDLE активен также для клиентского скрипта.20682069#### `turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])`20702071Устанавливает размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены через файл `turtle.cfg`.20722073**Параметры:**20742075- **width** – если целое число, размер в пикселях; если число с плавающей запятой, доля экрана; по умолчанию – 50% экрана.2076- **height** – если целое число, высота в пикселях; если число с плавающей запятой, доля от экрана; по умолчанию 75% экрана2077- **startx** – если положительное, начальная позиция в пикселях от левого края экрана; если отрицательное – от правого края; если `None`, окно центрируется по горизонтали2078- **starty** – если положительное, начальная позиция в пикселях от верхнего края экрана; если отрицательное – от нижнего края; если `None`, окно центрируется по вертикали20792080```pycon2081>>> screen.setup (width=200, height=200, startx=0, starty=0)2082>>> # устанавливает окно размером 200x200 пикселей в верхнем левом углу экрана2083>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)2084>>> # устанавливает окно 75% на 50% экрана и центрирует его2085```20862087#### `turtle.title(titlestring)`20882089**Параметры:**20902091**titlestring** – строка, отображаемая в заголовке окна черепашьей графики20922093Устанавливает заголовок окна черепашки равным *titlestring*.20942095```pycon2096>>> screen.title("Welcome to the turtle zoo!")2097```20982099## Открытые классы21002101#### `class turtle.RawTurtle(canvas)`21022103#### `class turtle.RawPen(canvas)`21042105**Параметры:**21062107**canvas** – `tkinter.Canvas`, [`ScrolledCanvas`](https://python-all.ru/3.12/library/turtle.html#turtle.ScrolledCanvas) или [`TurtleScreen`](https://python-all.ru/3.12/library/turtle.html#turtle.TurtleScreen)21082109Создаёт черепашку. Объект черепашки обладает всеми методами, описанными выше как «методы Turtle/RawTurtle».21102111#### `class turtle.Turtle`21122113Подкласс RawTurtle, имеет тот же интерфейс, но рисует на объекте [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen) по умолчанию, который создаётся автоматически при первом обращении.21142115#### `class turtle.TurtleScreen(cv)`21162117**Параметры:**21182119**cv** – `tkinter.Canvas`21202121Предоставляет экранно-ориентированные методы, такие как [`bgcolor()`](https://python-all.ru/3.12/library/turtle.html#turtle.bgcolor) и другие, описанные выше.21222123#### `class turtle.Screen`21242125Подкласс TurtleScreen, [дополненный четырьмя методами](https://python-all.ru/3.12/library/turtle.html#screenspecific).21262127#### `class turtle.ScrolledCanvas(master)`21282129**Параметры:**21302131**master** – виджет Tkinter, в который помещается ScrolledCanvas; например, Tkinter-холст с добавленными полосами прокрутки21322133Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве поля для черепашек.21342135#### `class turtle.Shape(type_, data)`21362137**Параметры:**21382139**type\_** – одна из строк: «polygon», «image», «compound»21402141Структура данных для описания фигур. Пара `(type_, data)` должна соответствовать следующей спецификации:21422143| *type\_* | *данные* |2144| --- | --- |2145| «polygon» | кортеж многоугольника, т.е. кортеж пар координат |2146| «image» | изображение (в таком виде используется только внутри!) |2147| «compound» | `None` (составная фигура должна строиться с помощью метода [`addcomponent()`](https://python-all.ru/3.12/library/turtle.html#turtle.Shape.addcomponent)) |21482149#### `addcomponent(poly, fill, outline, None)`21502151**Параметры:**21522153- **poly** – многоугольник, т.е. кортеж пар чисел2154- **fill** – цвет, которым будет заполнен *poly*2155- **outline** – цвет контура многоугольника (если задан)21562157Пример:21582159```pycon2160>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))2161>>> s = Shape("compound")2162>>> s.addcomponent(poly, "red", "blue")2163>>> # ... добавьте больше компонентов, а затем используйте register_shape()2164```21652166См. [Составные фигуры](https://python-all.ru/3.12/library/turtle.html#compoundshapes).21672168#### `class turtle.Vec2D(x, y)`21692170Двумерный векторный класс, используемый как вспомогательный класс для реализации graphics черепашки. Может быть полезен и для программ с графикой черепашки. Производный от tuple, так что вектор – это кортеж!21712172Предоставляет (для векторов *a*, *b* и числа *k*):21732174- `a + b` сложение векторов2175- `a - b` вычитание векторов2176- `a * b` скалярное произведение2177- `k * a` и `a * k` умножение на скаляр2178- `abs(a)` абсолютное значение a2179- `a.rotate(angle)` поворот21802181## Пояснение21822183Объект черепашки рисует на объекте экрана, и в объектно-ориентированном интерфейсе черепашки есть ряд ключевых классов, которые можно использовать для их создания и связи друг с другом.21842185Экземпляр [`Turtle`](https://python-all.ru/3.12/library/turtle.html#turtle.Turtle) автоматически создаст экземпляр [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen), если его ещё нет.21862187`Turtle` – подкласс [`RawTurtle`](https://python-all.ru/3.12/library/turtle.html#turtle.RawTurtle), который *не* создаёт автоматически поверхность для рисования – для него необходимо предоставить или создать *холст*. *Холст* может быть `tkinter.Canvas`, [`ScrolledCanvas`](https://python-all.ru/3.12/library/turtle.html#turtle.ScrolledCanvas) или [`TurtleScreen`](https://python-all.ru/3.12/library/turtle.html#turtle.TurtleScreen).21882189[`TurtleScreen`](https://python-all.ru/3.12/library/turtle.html#turtle.TurtleScreen) – основная поверхность для рисования черепашки. [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen) – подкласс `TurtleScreen` и включает [несколько дополнительных методов](https://python-all.ru/3.12/library/turtle.html#screenspecific) для управления своим внешним видом (включая размер и заголовок) и поведением. Конструктор `TurtleScreen` требует аргумент `tkinter.Canvas` или [`ScrolledCanvas`](https://python-all.ru/3.12/library/turtle.html#turtle.ScrolledCanvas).21902191Функциональный интерфейс для графики черепашки использует различные методы `Turtle` и `TurtleScreen`/`Screen`. За кулисами объект экрана автоматически создаётся при каждом вызове функции, производной от метода `Screen`. Аналогично, объект черепашки автоматически создаётся при каждом вызове любой из функций, производных от метода Turtle.21922193Для использования нескольких черепашек на одном экране необходимо использовать объектно-ориентированный интерфейс.21942195## Справка и настройка21962197### Как пользоваться справкой21982199Публичные методы классов Screen и Turtle подробно документированы через docstrings. Их можно использовать как онлайн-справку через средства помощи Python:22002201- При использовании IDLE всплывающие подсказки показывают сигнатуры и первые строки docstrings для введённых вызовов функций/методов.2202- Вызов [`help()`](https://python-all.ru/3.12/library/functions.html#help) для методов или функций отображает docstrings:22032204 ```python2205 >>> help(Screen.bgcolor)2206 Help on method bgcolor in module turtle:22072208 bgcolor(self, *args) unbound turtle.Screen method2209 Set or return backgroundcolor of the TurtleScreen.22102211 Arguments (if given): a color string or three numbers2212 in the range 0..colormode or a 3-tuple of such numbers.22132214 >>> screen.bgcolor("orange")2215 >>> screen.bgcolor()2216 "orange"2217 >>> screen.bgcolor(0.5,0,0.5)2218 >>> screen.bgcolor()2219 "#800080"22202221 >>> help(Turtle.penup)2222 Help on method penup in module turtle:22232224 penup(self) unbound turtle.Turtle method2225 Pull the pen up -- no drawing when moving.22262227 Aliases: penup | pu | up22282229 No argument22302231 >>> turtle.penup()2232 ```2233- Docstrings функций, производных от методов, имеют изменённую форму:22342235 ```python2236 >>> help(bgcolor)2237 Help on function bgcolor in module turtle:22382239 bgcolor(*args)2240 Set or return backgroundcolor of the TurtleScreen.22412242 Arguments (if given): a color string or three numbers2243 in the range 0..colormode or a 3-tuple of such numbers.22442245 Example::22462247 >>> bgcolor("orange")2248 >>> bgcolor()2249 "orange"2250 >>> bgcolor(0.5,0,0.5)2251 >>> bgcolor()2252 "#800080"22532254 >>> help(penup)2255 Help on function penup in module turtle:22562257 penup()2258 Pull the pen up -- no drawing when moving.22592260 Aliases: penup | pu | up22612262 No argument22632264 Example:2265 >>> penup()2266 ```22672268Эти изменённые docstrings создаются автоматически вместе с определениями функций, которые производятся от методов во время импорта.22692270### Перевод docstrings на разные языки22712272Существует утилита для создания словаря, ключами которого являются имена методов, а значениями – docstrings публичных методов классов Screen и Turtle.22732274#### `turtle.write_docstringdict(filename='turtle_docstringdict')`22752276**Параметры:**22772278**filename** – строка, используемая как имя файла22792280Создаёт и записывает словарь docstring в Python-скрипт с заданным именем файла. Эту функцию необходимо вызывать явно (она не используется классами графики черепашки). Словарь docstring будет записан в Python-скрипт `filename.py`. Он предназначен для использования в качестве шаблона для перевода docstrings на разные языки.22812282Если вы (или ваши студенты) хотите использовать [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle) с онлайн-справкой на вашем родном языке, необходимо перевести docstrings и сохранить полученный файл, например, как `turtle_docstringdict_german.py`.22832284Если в вашем файле `turtle.cfg` есть соответствующая запись, этот словарь будет считан на этапе импорта и заменит оригинальные англоязычные строки документации.22852286На момент написания этого текста есть словари строк документации на немецком и итальянском. (Запросы направляйте на [glingl@aon.at](https://python-all.ru/3.12/library/turtle.html).)22872288### Как настроить Screen и Turtles22892290Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить максимально возможную совместимость с ним.22912292Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации `turtle.cfg`, который будет прочитан на этапе импорта и изменит конфигурацию в соответствии с его настройками.22932294Встроенная конфигурация соответствует следующему `turtle.cfg`:22952296```ini2297width = 0.52298height = 0.752299leftright = None2300topbottom = None2301canvwidth = 4002302canvheight = 3002303mode = standard2304colormode = 1.02305delay = 102306undobuffersize = 10002307shape = classic2308pencolor = black2309fillcolor = black2310resizemode = noresize2311visible = True2312language = english2313exampleturtle = turtle2314examplescreen = screen2315title = Python Turtle Graphics2316using_IDLE = False2317```23182319Краткое пояснение выбранных записей:23202321- Первые четыре строки соответствуют аргументам метода [`Screen.setup`](https://python-all.ru/3.12/library/turtle.html#turtle.setup).2322- Строки 5 и 6 соответствуют аргументам метода [`Screen.screensize`](https://python-all.ru/3.12/library/turtle.html#turtle.screensize).2323- *shape* может быть любой из встроенных форм, например: arrow, turtle и т.д. Для получения дополнительной информации попробуйте `help(shape)`.2324- Если вы хотите не использовать цвет заливки (т.е. сделать черепашку прозрачной), вы должны написать `fillcolor = ""` (но все непустые строки не должны содержать кавычки в cfg-файле).2325- Если вы хотите отразить состояние черепашки, вы должны использовать `resizemode = auto`.2326- Если вы установите, например, `language = italian`, то словарь строк документации `turtle_docstringdict_italian.py` будет загружен во время импорта (если он присутствует в пути импорта, например, в той же директории, что и [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle)).2327- Записи *exampleturtle* и *examplescreen* задают имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.2328- *using\_IDLE*: Установите это в `True`, если вы регулярно работаете с IDLE и его переключателем `-n` («нет подпроцесса»). Это предотвратит [`exitonclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.exitonclick) от входа в главный цикл.23292330Может быть файл `turtle.cfg` в каталоге, где хранится [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle), и дополнительный файл в текущем рабочем каталоге. Последний переопределит настройки первого.23312332Каталог `Lib/turtledemo` содержит файл `turtle.cfg`. Вы можете изучить его как пример и увидеть его эффекты при запуске демонстраций (желательно не из средства просмотра демонстраций).23332334## [`turtledemo`](https://python-all.ru/3.12/library/turtle.html#module-turtledemo) – Демонстрационные скрипты23352336Пакет [`turtledemo`](https://python-all.ru/3.12/library/turtle.html#module-turtledemo) включает набор демонстрационных скриптов. Эти скрипты можно запускать и просматривать с помощью поставляемого средства просмотра демонстраций следующим образом:23372338```python2339python -m turtledemo2340```23412342В качестве альтернативы вы можете запускать демонстрационные скрипты по отдельности. Например,23432344```python2345python -m turtledemo.bytedesign2346```23472348Каталог пакета [`turtledemo`](https://python-all.ru/3.12/library/turtle.html#module-turtledemo) содержит:23492350- Средство просмотра демонстраций `__main__.py`, которое можно использовать для просмотра исходного кода скриптов и одновременного их запуска.2351- Несколько скриптов, демонстрирующих различные возможности модуля [`turtle`](https://python-all.ru/3.12/library/turtle.html#module-turtle). Примеры доступны через меню Examples. Их также можно запускать отдельно.2352- Файл `turtle.cfg`, который служит примером того, как писать и использовать такие файлы.23532354Демонстрационные скрипты:23552356| Имя | Описание | Возможности |2357| --- | --- | --- |2358| bytedesign | сложный классический узор черепашьей графики | [`tracer()`](https://python-all.ru/3.12/library/turtle.html#turtle.tracer), delay, [`update()`](https://python-all.ru/3.12/library/turtle.html#turtle.update) |2359| chaos | строит график динамики Ферхюльста, показывает, что компьютерные вычисления иногда могут давать результаты, противоречащие здравому смыслу | мировые координаты |2360| clock | аналоговые часы, показывающие время вашего компьютера | черепахи как стрелки часов, ontimer |2361| colormixer | эксперимент с r, g, b | [`ondrag()`](https://python-all.ru/3.12/library/turtle.html#turtle.ondrag) |2362| forest | 3 дерева обхода в ширину | рандомизация |2363| fractalcurves | Кривые Гильберта и Коха | рекурсия |2364| lindenmayer | этноматематика (индийские коламы) | L-система |2365| minimal\_hanoi | Ханойские башни | Прямоугольные черепахи как диски Ханоя (shape, shapesize) |2366| nim | игра в классический ним с тремя кучками палочек против компьютера. | черепашки как палочки нима, событийно-ориентированное управление (мышь, клавиатура) |2367| paint | супер-минималистичная программа для рисования | [`onclick()`](https://python-all.ru/3.12/library/turtle.html#turtle.onclick) |2368| peace | элементарный | черепашка: внешний вид и анимация |2369| penrose | непериодическое замощение воздушными змеями и дротиками | [`stamp()`](https://python-all.ru/3.12/library/turtle.html#turtle.stamp) |2370| planet\_and\_moon | симуляция гравитационной системы | составные фигуры, [`Vec2D`](https://python-all.ru/3.12/library/turtle.html#turtle.Vec2D) |2371| rosette | узор из статьи в Википедии о черепашьей графике | [`clone()`](https://python-all.ru/3.12/library/turtle.html#turtle.clone), [`undo()`](https://python-all.ru/3.12/library/turtle.html#turtle.undo) |2372| round\_dance | танцующие черепашки, вращающиеся попарно в противоположных направлениях | составные фигуры, clone shapesize, tilt, get\_shapepoly, update |2373| sorting\_animate | визуальная демонстрация различных методов сортировки | простое выравнивание, рандомизация |2374| дерево | (графическое) дерево обхода в ширину (с использованием генераторов) | [`clone()`](https://python-all.ru/3.12/library/turtle.html#turtle.clone) |2375| two\_canvases | простой дизайн | черепашки на двух холстах |2376| yinyang | ещё один элементарный пример | [`circle()`](https://python-all.ru/3.12/library/turtle.html#turtle.circle) |23772378Удачи!23792380## Изменения, начиная с Python 2.623812382- Методы [`Turtle.tracer`](https://python-all.ru/3.12/library/turtle.html#turtle.tracer), [`Turtle.window_width`](https://python-all.ru/3.12/library/turtle.html#turtle.window_width) и [`Turtle.window_height`](https://python-all.ru/3.12/library/turtle.html#turtle.window_height) были удалены. Методы с такими именами и функциональностью теперь доступны только как методы [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen). Производные от них функции остаются доступными. (На самом деле уже в Python 2.6 эти методы были просто дубликатами соответствующих методов [`TurtleScreen`](https://python-all.ru/3.12/library/turtle.html#turtle.TurtleScreen)/[`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen).)2383- Метод `Turtle.fill()` был удалён. Поведение [`begin_fill()`](https://python-all.ru/3.12/library/turtle.html#turtle.begin_fill) и [`end_fill()`](https://python-all.ru/3.12/library/turtle.html#turtle.end_fill) незначительно изменилось: теперь каждый процесс заливки должен завершаться вызовом `end_fill()`.2384- Добавлен метод [`Turtle.filling`](https://python-all.ru/3.12/library/turtle.html#turtle.filling). Он возвращает булево значение: `True`, если процесс заливки выполняется, `False` в противном случае. Это поведение соответствует вызову `fill()` без аргументов в Python 2.6.23852386## Изменения, начиная с Python 3.023872388- Методы [`Turtle`](https://python-all.ru/3.12/library/turtle.html#turtle.Turtle), [`shearfactor()`](https://python-all.ru/3.12/library/turtle.html#turtle.shearfactor), [`shapetransform()`](https://python-all.ru/3.12/library/turtle.html#turtle.shapetransform) и [`get_shapepoly()`](https://python-all.ru/3.12/library/turtle.html#turtle.get_shapepoly) были добавлены. Таким образом, полный спектр обычных линейных преобразований теперь доступен для трансформации форм черепах. [`tiltangle()`](https://python-all.ru/3.12/library/turtle.html#turtle.tiltangle) был улучшен в функциональности: теперь его можно использовать для получения или установки угла наклона. [`settiltangle()`](https://python-all.ru/3.12/library/turtle.html#turtle.settiltangle) устарел.2389- Метод [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen) [`onkeypress()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkeypress) добавлен как дополнение к [`onkey()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkey). Поскольку последний привязывает действия к событию отпускания клавиши, для него также был добавлен псевдоним [`onkeyrelease()`](https://python-all.ru/3.12/library/turtle.html#turtle.onkeyrelease).2390- Метод [`Screen.mainloop`](https://python-all.ru/3.12/library/turtle.html#turtle.mainloop) добавлен, поэтому больше нет необходимости использовать отдельную функцию [`mainloop()`](https://python-all.ru/3.12/library/turtle.html#turtle.mainloop) при работе с объектами [`Screen`](https://python-all.ru/3.12/library/turtle.html#turtle.Screen) и [`Turtle`](https://python-all.ru/3.12/library/turtle.html#turtle.Turtle).2391- Добавлены два метода ввода: [`Screen.textinput`](https://python-all.ru/3.12/library/turtle.html#turtle.textinput) и [`Screen.numinput`](https://python-all.ru/3.12/library/turtle.html#turtle.numinput). Они открывают диалоговые окна ввода и возвращают строки и числа соответственно.2392- Два примера скриптов `tdemo_nim.py` и `tdemo_round_dance.py` добавлены в каталог `Lib/turtledemo`.2393