Документация Python неофициальный перевод

turtle.md

2372 строк · 111.5 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.11/library/turtle.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle) – Черепашья графика89**Исходный код:** [Lib/turtle.py](https://python-all.ru/src/3.11/Lib/turtle.py)1011---1213## Введение1415Черепашья графика – это реализация [популярных инструментов геометрического рисования, впервые представленных в Logo](https://python-all.ru/3.11/library/turtle.html), разработанных Уолли Фёрзейгом, Сеймуром Пейпертом и Синтией Соломон в 1967 году.1617Черепашья звезда1819Черепашка может рисовать сложные фигуры с помощью программ, повторяющих простые движения.2021![../_images/turtle-star.png](https://python-all.ru/3.11/_images/turtle-star.png)2223В 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.11/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.11/library/turtle.html#turtle-tutorial) описан этот подход.153154Стоит отметить, что многие команды черепашки имеют ещё более краткие эквиваленты, например `fd()` для [`forward()`](https://python-all.ru/3.11/library/turtle.html#turtle.forward). Они особенно полезны при работе с теми, кто ещё не освоил набор текста.155156> Для работы черепашьей графики необходимо, чтобы в системе был установлен [`Tk interface package`](https://python-all.ru/3.11/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.11/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.11/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.11/library/turtle.html#turtle.forward)235236|237238[`fd()`](https://python-all.ru/3.11/library/turtle.html#turtle.fd)239240[`backward()`](https://python-all.ru/3.11/library/turtle.html#turtle.backward)241242|243244[`bk()`](https://python-all.ru/3.11/library/turtle.html#turtle.bk)245246|247248[`back()`](https://python-all.ru/3.11/library/turtle.html#turtle.back)249250[`right()`](https://python-all.ru/3.11/library/turtle.html#turtle.right)251252|253254[`rt()`](https://python-all.ru/3.11/library/turtle.html#turtle.rt)255256[`left()`](https://python-all.ru/3.11/library/turtle.html#turtle.left)257258|259260[`lt()`](https://python-all.ru/3.11/library/turtle.html#turtle.lt)261262[`goto()`](https://python-all.ru/3.11/library/turtle.html#turtle.goto)263264|265266[`setpos()`](https://python-all.ru/3.11/library/turtle.html#turtle.setpos)267268|269270[`setposition()`](https://python-all.ru/3.11/library/turtle.html#turtle.setposition)271272[`setx()`](https://python-all.ru/3.11/library/turtle.html#turtle.setx)273274[`sety()`](https://python-all.ru/3.11/library/turtle.html#turtle.sety)275276[`setheading()`](https://python-all.ru/3.11/library/turtle.html#turtle.setheading)277278|279280[`seth()`](https://python-all.ru/3.11/library/turtle.html#turtle.seth)281282[`home()`](https://python-all.ru/3.11/library/turtle.html#turtle.home)283284[`circle()`](https://python-all.ru/3.11/library/turtle.html#turtle.circle)285286[`dot()`](https://python-all.ru/3.11/library/turtle.html#turtle.dot)287288[`stamp()`](https://python-all.ru/3.11/library/turtle.html#turtle.stamp)289290[`clearstamp()`](https://python-all.ru/3.11/library/turtle.html#turtle.clearstamp)291292[`clearstamps()`](https://python-all.ru/3.11/library/turtle.html#turtle.clearstamps)293294[`undo()`](https://python-all.ru/3.11/library/turtle.html#turtle.undo)295296[`speed()`](https://python-all.ru/3.11/library/turtle.html#turtle.speed)297298**Состояние черепахи**299300[`position()`](https://python-all.ru/3.11/library/turtle.html#turtle.position)301302|303304[`pos()`](https://python-all.ru/3.11/library/turtle.html#turtle.pos)305306[`towards()`](https://python-all.ru/3.11/library/turtle.html#turtle.towards)307308[`xcor()`](https://python-all.ru/3.11/library/turtle.html#turtle.xcor)309310[`ycor()`](https://python-all.ru/3.11/library/turtle.html#turtle.ycor)311312[`heading()`](https://python-all.ru/3.11/library/turtle.html#turtle.heading)313314[`distance()`](https://python-all.ru/3.11/library/turtle.html#turtle.distance)315316**Настройка и измерение**317318[`degrees()`](https://python-all.ru/3.11/library/turtle.html#turtle.degrees)319320[`radians()`](https://python-all.ru/3.11/library/turtle.html#turtle.radians)321322**Управление пером**323324**Состояние рисования**325326[`pendown()`](https://python-all.ru/3.11/library/turtle.html#turtle.pendown)327328|329330[`pd()`](https://python-all.ru/3.11/library/turtle.html#turtle.pd)331332|333334[`down()`](https://python-all.ru/3.11/library/turtle.html#turtle.down)335336[`penup()`](https://python-all.ru/3.11/library/turtle.html#turtle.penup)337338|339340[`pu()`](https://python-all.ru/3.11/library/turtle.html#turtle.pu)341342|343344[`up()`](https://python-all.ru/3.11/library/turtle.html#turtle.up)345346[`pensize()`](https://python-all.ru/3.11/library/turtle.html#turtle.pensize)347348|349350[`width()`](https://python-all.ru/3.11/library/turtle.html#turtle.width)351352[`pen()`](https://python-all.ru/3.11/library/turtle.html#turtle.pen)353354[`isdown()`](https://python-all.ru/3.11/library/turtle.html#turtle.isdown)355356**Управление цветом**357358[`color()`](https://python-all.ru/3.11/library/turtle.html#turtle.color)359360[`pencolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.pencolor)361362[`fillcolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.fillcolor)363364**Заливка**365366[`filling()`](https://python-all.ru/3.11/library/turtle.html#turtle.filling)367368[`begin_fill()`](https://python-all.ru/3.11/library/turtle.html#turtle.begin_fill)369370[`end_fill()`](https://python-all.ru/3.11/library/turtle.html#turtle.end_fill)371372**Дополнительное управление рисованием**373374[`reset()`](https://python-all.ru/3.11/library/turtle.html#turtle.reset)375376[`clear()`](https://python-all.ru/3.11/library/turtle.html#turtle.clear)377378[`write()`](https://python-all.ru/3.11/library/turtle.html#turtle.write)379380**Состояние черепахи**381382**Видимость**383384[`showturtle()`](https://python-all.ru/3.11/library/turtle.html#turtle.showturtle)385386|387388[`st()`](https://python-all.ru/3.11/library/turtle.html#turtle.st)389390[`hideturtle()`](https://python-all.ru/3.11/library/turtle.html#turtle.hideturtle)391392|393394[`ht()`](https://python-all.ru/3.11/library/turtle.html#turtle.ht)395396[`isvisible()`](https://python-all.ru/3.11/library/turtle.html#turtle.isvisible)397398**Внешний вид**399400[`shape()`](https://python-all.ru/3.11/library/turtle.html#turtle.shape)401402[`resizemode()`](https://python-all.ru/3.11/library/turtle.html#turtle.resizemode)403404[`shapesize()`](https://python-all.ru/3.11/library/turtle.html#turtle.shapesize)405406|407408[`turtlesize()`](https://python-all.ru/3.11/library/turtle.html#turtle.turtlesize)409410[`shearfactor()`](https://python-all.ru/3.11/library/turtle.html#turtle.shearfactor)411412[`settiltangle()`](https://python-all.ru/3.11/library/turtle.html#turtle.settiltangle)413414[`tiltangle()`](https://python-all.ru/3.11/library/turtle.html#turtle.tiltangle)415416[`tilt()`](https://python-all.ru/3.11/library/turtle.html#turtle.tilt)417418[`shapetransform()`](https://python-all.ru/3.11/library/turtle.html#turtle.shapetransform)419420[`get_shapepoly()`](https://python-all.ru/3.11/library/turtle.html#turtle.get_shapepoly)421422**Использование событий**423424[`onclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.onclick)425426[`onrelease()`](https://python-all.ru/3.11/library/turtle.html#turtle.onrelease)427428[`ondrag()`](https://python-all.ru/3.11/library/turtle.html#turtle.ondrag)429430**Специальные методы черепахи**431432[`begin_poly()`](https://python-all.ru/3.11/library/turtle.html#turtle.begin_poly)433434[`end_poly()`](https://python-all.ru/3.11/library/turtle.html#turtle.end_poly)435436[`get_poly()`](https://python-all.ru/3.11/library/turtle.html#turtle.get_poly)437438[`clone()`](https://python-all.ru/3.11/library/turtle.html#turtle.clone)439440[`getturtle()`](https://python-all.ru/3.11/library/turtle.html#turtle.getturtle)441442|443444[`getpen()`](https://python-all.ru/3.11/library/turtle.html#turtle.getpen)445446[`getscreen()`](https://python-all.ru/3.11/library/turtle.html#turtle.getscreen)447448[`setundobuffer()`](https://python-all.ru/3.11/library/turtle.html#turtle.setundobuffer)449450[`undobufferentries()`](https://python-all.ru/3.11/library/turtle.html#turtle.undobufferentries)451452### Методы TurtleScreen/Screen453454**Управление окном**455456[`bgcolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.bgcolor)457458[`bgpic()`](https://python-all.ru/3.11/library/turtle.html#turtle.bgpic)459460[`clearscreen()`](https://python-all.ru/3.11/library/turtle.html#turtle.clearscreen)461462[`resetscreen()`](https://python-all.ru/3.11/library/turtle.html#turtle.resetscreen)463464[`screensize()`](https://python-all.ru/3.11/library/turtle.html#turtle.screensize)465466[`setworldcoordinates()`](https://python-all.ru/3.11/library/turtle.html#turtle.setworldcoordinates)467468**Управление анимацией**469470[`delay()`](https://python-all.ru/3.11/library/turtle.html#turtle.delay)471472[`tracer()`](https://python-all.ru/3.11/library/turtle.html#turtle.tracer)473474[`update()`](https://python-all.ru/3.11/library/turtle.html#turtle.update)475476**Использование событий экрана**477478[`listen()`](https://python-all.ru/3.11/library/turtle.html#turtle.listen)479480[`onkey()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkey)481482|483484[`onkeyrelease()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkeyrelease)485486[`onkeypress()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkeypress)487488[`onclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.onclick)489490|491492[`onscreenclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.onscreenclick)493494[`ontimer()`](https://python-all.ru/3.11/library/turtle.html#turtle.ontimer)495496[`mainloop()`](https://python-all.ru/3.11/library/turtle.html#turtle.mainloop)497498|499500[`done()`](https://python-all.ru/3.11/library/turtle.html#turtle.done)501502**Настройки и специальные методы**503504[`mode()`](https://python-all.ru/3.11/library/turtle.html#turtle.mode)505506[`colormode()`](https://python-all.ru/3.11/library/turtle.html#turtle.colormode)507508[`getcanvas()`](https://python-all.ru/3.11/library/turtle.html#turtle.getcanvas)509510[`getshapes()`](https://python-all.ru/3.11/library/turtle.html#turtle.getshapes)511512[`register_shape()`](https://python-all.ru/3.11/library/turtle.html#turtle.register_shape)513514|515516[`addshape()`](https://python-all.ru/3.11/library/turtle.html#turtle.addshape)517518[`turtles()`](https://python-all.ru/3.11/library/turtle.html#turtle.turtles)519520[`window_height()`](https://python-all.ru/3.11/library/turtle.html#turtle.window_height)521522[`window_width()`](https://python-all.ru/3.11/library/turtle.html#turtle.window_width)523524**Методы ввода**525526[`textinput()`](https://python-all.ru/3.11/library/turtle.html#turtle.textinput)527528[`numinput()`](https://python-all.ru/3.11/library/turtle.html#turtle.numinput)529530**Методы, специфичные для Screen**531532[`bye()`](https://python-all.ru/3.11/library/turtle.html#turtle.bye)533534[`exitonclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.exitonclick)535536[`setup()`](https://python-all.ru/3.11/library/turtle.html#turtle.setup)537538[`title()`](https://python-all.ru/3.11/library/turtle.html#turtle.title)539540## Методы RawTurtle/Turtle и соответствующие функции541542Большинство примеров в этом разделе ссылаются на экземпляр Turtle с именем `turtle`.543544### Движение черепахи545546#### `turtle.forward(distance)`547548#### `turtle.fd(distance)`549550**Параметры:**551552**distance** – число (целое или с плавающей запятой)553554Перемещает черепаху вперед на указанное *distance*, в направлении, в котором черепаха смотрит.555556```pycon557>>> turtle.position()558(0.00,0.00)559>>> turtle.forward(25)560>>> turtle.position()561(25.00,0.00)562>>> turtle.forward(-75)563>>> turtle.position()564(-50.00,0.00)565```566567#### `turtle.back(distance)`568569#### `turtle.bk(distance)`570571#### `turtle.backward(distance)`572573**Параметры:**574575**distance** – число576577Перемещает черепаху назад на *расстояние*, противоположно направлению, в котором черепаха смотрит. Направление черепахи не меняется.578579```pycon580>>> turtle.position()581(0.00,0.00)582>>> turtle.backward(30)583>>> turtle.position()584(-30.00,0.00)585```586587#### `turtle.right(angle)`588589#### `turtle.rt(angle)`590591**Параметры:**592593**angle** – число (целое или с плавающей запятой)594595Поворачивает черепаху вправо на *angle* единиц. (По умолчанию единицы – градусы, но их можно изменить с помощью функций [`degrees()`](https://python-all.ru/3.11/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.11/library/turtle.html#turtle.radians).) Направление поворота зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.11/library/turtle.html#turtle.mode).596597```pycon598>>> turtle.heading()59922.0600>>> turtle.right(45)601>>> turtle.heading()602337.0603```604605#### `turtle.left(angle)`606607#### `turtle.lt(angle)`608609**Параметры:**610611**angle** – число (целое или с плавающей запятой)612613Поворачивает черепаху влево на *angle* единиц. (По умолчанию единицы – градусы, но их можно изменить с помощью функций [`degrees()`](https://python-all.ru/3.11/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.11/library/turtle.html#turtle.radians).) Направление поворота зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.11/library/turtle.html#turtle.mode).614615```pycon616>>> turtle.heading()61722.0618>>> turtle.left(45)619>>> turtle.heading()62067.0621```622623#### `turtle.goto(x, y=None)`624625#### `turtle.setpos(x, y=None)`626627#### `turtle.setposition(x, y=None)`628629**Параметры:**630631- **x** – число или пара/вектор чисел632- **y** – число или `None`633634Если *y* равно `None`, то *x* должно быть парой координат или [`Vec2D`](https://python-all.ru/3.11/library/turtle.html#turtle.Vec2D) (например, как возвращается функцией [`pos()`](https://python-all.ru/3.11/library/turtle.html#turtle.pos)).635636Перемещает черепаху в абсолютную позицию. Если перо опущено, рисует линию. Направление черепахи не меняется.637638```pycon639>>> tp = turtle.pos()640>>> tp641(0.00,0.00)642>>> turtle.setpos(60,30)643>>> turtle.pos()644(60.00,30.00)645>>> turtle.setpos((20,80))646>>> turtle.pos()647(20.00,80.00)648>>> turtle.setpos(tp)649>>> turtle.pos()650(0.00,0.00)651```652653#### `turtle.setx(x)`654655**Параметры:**656657**x** – число (целое или с плавающей запятой)658659Устанавливает первую координату черепахи в *x*, вторая координата остается без изменений.660661```pycon662>>> turtle.position()663(0.00,240.00)664>>> turtle.setx(10)665>>> turtle.position()666(10.00,240.00)667```668669#### `turtle.sety(y)`670671**Параметры:**672673**y** – число (целое или с плавающей запятой)674675Устанавливает вторую координату черепахи в *y*, первая координата остается без изменений.676677```pycon678>>> turtle.position()679(0.00,40.00)680>>> turtle.sety(-10)681>>> turtle.position()682(0.00,-10.00)683```684685#### `turtle.setheading(to_angle)`686687#### `turtle.seth(to_angle)`688689**Параметры:**690691**to\_angle** – число (целое или с плавающей запятой)692693Устанавливает направление черепахи в *to\_angle*. Вот некоторые распространенные направления в градусах:694695| стандартный режим | режим Logo |696| --- | --- |697| 0 – восток | 0 – север |698| 90 – север | 90 – восток |699| 180 – запад | 180 – юг |700| 270 – юг | 270 – запад |701702```pycon703>>> turtle.setheading(90)704>>> turtle.heading()70590.0706```707708#### `turtle.home()`709710Перемещает черепаху в начало координат – (0,0) – и устанавливает её направление в начальную ориентацию (зависит от режима, см. [`mode()`](https://python-all.ru/3.11/library/turtle.html#turtle.mode)).711712```pycon713>>> turtle.heading()71490.0715>>> turtle.position()716(0.00,-10.00)717>>> turtle.home()718>>> turtle.position()719(0.00,0.00)720>>> turtle.heading()7210.0722```723724#### `turtle.circle(radius, extent=None, steps=None)`725726**Параметры:**727728- **radius** – число729- **extent** – число (или `None`)730- **steps** – целое число (или `None`)731732Рисует окружность с заданным *radius*. Центр находится на *radius* единиц левее черепахи; *extent* – угол – определяет, какая часть окружности рисуется. Если *extent* не указан, рисуется вся окружность. Если *extent* не является полной окружностью, одна из конечных точек дуги – это текущее положение пера. Дуга рисуется против часовой стрелки, если *radius* положительный, и по часовой стрелке в противном случае. В конце направление черепахи изменяется на величину *extent*.733734Поскольку окружность аппроксимируется вписанным правильным многоугольником, *steps* определяет количество используемых шагов. Если не указано, вычисляется автоматически. Может использоваться для рисования правильных многоугольников.735736```pycon737>>> turtle.home()738>>> turtle.position()739(0.00,0.00)740>>> turtle.heading()7410.0742>>> turtle.circle(50)743>>> turtle.position()744(-0.00,0.00)745>>> turtle.heading()7460.0747>>> turtle.circle(120, 180)  # нарисовать полуокружность748>>> turtle.position()749(0.00,240.00)750>>> turtle.heading()751180.0752```753754#### `turtle.dot(size=None, *color)`755756**Параметры:**757758- **size** – целое число \>= 1 (если указано)759- **color** – строка цвета или кортеж числовых цветов760761Рисует круглую точку диаметром *size*, используя *color*. Если *size* не указан, используется максимальное из pensize+4 и 2\*pensize.762763```pycon764>>> turtle.home()765>>> turtle.dot()766>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)767>>> turtle.position()768(100.00,-0.00)769>>> turtle.heading()7700.0771```772773#### `turtle.stamp()`774775Наносит копию формы черепахи на холст в текущей позиции черепахи. Возвращает stamp\_id для этой печати, который можно использовать для её удаления вызовом `clearstamp(stamp_id)`.776777```pycon778>>> turtle.color("blue")779>>> turtle.stamp()78011781>>> turtle.fd(50)782```783784#### `turtle.clearstamp(stampid)`785786**Параметры:**787788**stampid** – целое число, должно быть возвращаемым значением предыдущего вызова [`stamp()`](https://python-all.ru/3.11/library/turtle.html#turtle.stamp)789790Удаляет печать с заданным *stampid*.791792```pycon793>>> turtle.position()794(150.00,-0.00)795>>> turtle.color("blue")796>>> astamp = turtle.stamp()797>>> turtle.fd(50)798>>> turtle.position()799(200.00,-0.00)800>>> turtle.clearstamp(astamp)801>>> turtle.position()802(200.00,-0.00)803```804805#### `turtle.clearstamps(n=None)`806807**Параметры:**808809**n** – целое число (или `None`)810811Удаляет все или первые/последние *n* отпечатков черепашки. Если *n* равно `None`, удаляет все отпечатки, если *n* \> 0, удаляет первые *n* отпечатков, а если *n* \< 0, удаляет последние *n* отпечатков.812813```pycon814>>> for i in range(8):815...     turtle.stamp(); turtle.fd(30)8161381714818158191682017821188221982320824>>> turtle.clearstamps(2)825>>> turtle.clearstamps(-2)826>>> turtle.clearstamps()827```828829#### `turtle.undo()`830831Отменяет (повторно) последнее(ие) действие(я) черепашки. Количество доступных действий отмены определяется размером буфера отмены.832833```pycon834>>> for i in range(4):835...     turtle.fd(50); turtle.lt(80)836...837>>> for i in range(8):838...     turtle.undo()839```840841#### `turtle.speed(speed=None)`842843**Параметры:**844845**speed** – целое число в диапазоне 0..10 или speedstring (см. ниже).846847Устанавливает скорость черепашки в целое значение от 0 до 10. Если аргумент не указан, возвращает текущую скорость.848849Если входное значение – число больше 10 или меньше 0.5, скорость устанавливается в 0. Speedstrings сопоставляются со значениями скорости следующим образом:850851- «самый быстрый»: 0852- «быстрый»: 10853- “обычная”: 6854- “медленная”: 3855- “самая медленная”: 1856857Скорости от 1 до 10 обеспечивают всё более быструю анимацию рисования линий и поворотов черепашки.858859Внимание: *speed* = 0 означает, что *никакой* анимации не происходит. forward/back заставляют черепашку прыгать, а left/right заставляют черепашку мгновенно поворачиваться.860861```pycon862>>> turtle.speed()8633864>>> turtle.speed('normal')865>>> turtle.speed()8666867>>> turtle.speed(9)868>>> turtle.speed()8699870```871872### Состояние черепашки873874#### `turtle.position()`875876#### `turtle.pos()`877878Возвращает текущее положение черепашки (x,y) (в виде [`Vec2D`](https://python-all.ru/3.11/library/turtle.html#turtle.Vec2D) вектора).879880```pycon881>>> turtle.pos()882(440.00,-0.00)883```884885#### `turtle.towards(x, y=None)`886887**Параметры:**888889- **x** – число или пара/вектор чисел, или экземпляр черепашки890- **y** – число, если *x* – число, иначе `None`891892Возвращает угол между линией от положения черепашки до точки, указанной через (x,y), указанного вектора или другой черепашки. Это зависит от начальной ориентации черепашки, которая зависит от режима – “standard”/“world” или “logo”.893894```pycon895>>> turtle.goto(10, 10)896>>> turtle.towards(0,0)897225.0898```899900#### `turtle.xcor()`901902Возвращает x-координату черепашки.903904```pycon905>>> turtle.home()906>>> turtle.left(50)907>>> turtle.forward(100)908>>> turtle.pos()909(64.28,76.60)910>>> print(round(turtle.xcor(), 5))91164.27876912```913914#### `turtle.ycor()`915916Возвращает y-координату черепашки.917918```pycon919>>> turtle.home()920>>> turtle.left(60)921>>> turtle.forward(100)922>>> print(turtle.pos())923(50.00,86.60)924>>> print(round(turtle.ycor(), 5))92586.60254926```927928#### `turtle.heading()`929930Возвращает текущий курс черепашки (значение зависит от режима черепашки, см. [`mode()`](https://python-all.ru/3.11/library/turtle.html#turtle.mode)).931932```pycon933>>> turtle.home()934>>> turtle.left(67)935>>> turtle.heading()93667.0937```938939#### `turtle.distance(x, y=None)`940941**Параметры:**942943- **x** – число или пара/вектор чисел, или экземпляр черепашки944- **y** – число, если *x* – число, иначе `None`945946Возвращает расстояние от черепашки до точки (x,y), указанного вектора или указанной другой черепашки в единицах шага черепашки.947948```pycon949>>> turtle.home()950>>> turtle.distance(30,40)95150.0952>>> turtle.distance((30,40))95350.0954>>> joe = Turtle()955>>> joe.forward(77)956>>> turtle.distance(joe)95777.0958```959960### Настройки измерения961962#### `turtle.degrees(fullcircle=360.0)`963964**Параметры:**965966**fullcircle** – число967968Устанавливает единицы измерения углов, то есть задаёт количество «градусов» в полном обороте. Значение по умолчанию – 360 градусов.969970```pycon971>>> turtle.home()972>>> turtle.left(90)973>>> turtle.heading()97490.0975976Change angle measurement unit to grad (also known as gon,977grade, or gradian and equals 1/100-th of the right angle.)978>>> turtle.degrees(400.0)979>>> turtle.heading()980100.0981>>> turtle.degrees(360)982>>> turtle.heading()98390.0984```985986#### `turtle.radians()`987988Устанавливает единицы измерения углов в радианах. Эквивалентно `degrees(2*math.pi)`.989990```pycon991>>> turtle.home()992>>> turtle.left(90)993>>> turtle.heading()99490.0995>>> turtle.radians()996>>> turtle.heading()9971.5707963267948966998```9991000### Управление пером10011002#### Состояние рисования10031004#### `turtle.pendown()`10051006#### `turtle.pd()`10071008#### `turtle.down()`10091010Опускает перо – рисование при движении.10111012#### `turtle.penup()`10131014#### `turtle.pu()`10151016#### `turtle.up()`10171018Поднимает перо – при движении не рисует.10191020#### `turtle.pensize(width=None)`10211022#### `turtle.width(width=None)`10231024**Параметры:**10251026**width** – положительное число10271028Устанавливает толщину линии в *width* или возвращает её. Если для resizemode установлено «auto» и форма черепашки является многоугольником, этот многоугольник рисуется с такой же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.10291030```pycon1031>>> turtle.pensize()103211033>>> turtle.pensize(10)   # отсюда рисуются линии шириной 101034```10351036#### `turtle.pen(pen=None, **pendict)`10371038**Параметры:**10391040- **pen** – словарь, содержащий некоторые или все из перечисленных ниже ключей1041- **pendict** – один или несколько именованных аргументов, использующих перечисленные ниже ключи10421043Возвращает или устанавливает атрибуты пера в виде «словаря пера» со следующими парами ключ/значение:10441045- “отображается”: True/False1046- “перо опущено”: True/False1047- “цвет пера”: строка цвета или кортеж цвета1048- “цвет заливки”: строка цвета или кортеж цвета1049- “размер пера”: положительное число1050- “скорость”: число от 0 до 101051- “режим изменения размера”: “auto” or “user” or “noresize”1052- “коэффициент растяжения”: (положительное число, положительное число)1053- «outline»: положительное число1054- «tilt»: число10551056Этот словарь можно передать аргументом в последующий вызов [`pen()`](https://python-all.ru/3.11/library/turtle.html#turtle.pen), чтобы восстановить предыдущее состояние пера. Кроме того, один или несколько из этих атрибутов можно указать как именованные аргументы. Это позволяет установить несколько атрибутов пера одной инструкцией.10571058```pycon1059>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)1060>>> sorted(turtle.pen().items())1061[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),1062 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),1063 ('shearfactor', 0.0), ('shown', True), ('speed', 9),1064 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]1065>>> penstate=turtle.pen()1066>>> turtle.color("yellow", "")1067>>> turtle.penup()1068>>> sorted(turtle.pen().items())[:3]1069[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]1070>>> turtle.pen(penstate, fillcolor="green")1071>>> sorted(turtle.pen().items())[:3]1072[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]1073```10741075#### `turtle.isdown()`10761077Возвращает `True`, если перо опущено, и `False`, если поднято.10781079```pycon1080>>> turtle.penup()1081>>> turtle.isdown()1082False1083>>> turtle.pendown()1084>>> turtle.isdown()1085True1086```10871088#### Управление цветом10891090#### `turtle.pencolor(*args)`10911092Возвращает или задаёт цвет пера.10931094Допускаются четыре формата ввода:10951096**`pencolor()`**10971098Возвращает текущий pencolor в виде строки спецификации цвета или в виде кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.10991100**`pencolor(colorstring)`**11011102Задаёт цвет пера равным *colorstring*, строке описания цвета Tk, например, `"red"`, `"yellow"` или `"#33cc8c"`.11031104**`pencolor((r, g, b))`**11051106Задаёт цвет пера по цвету RGB, представленному кортежем из *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode, где colormode равен 1.0 или 255 (см. [`colormode()`](https://python-all.ru/3.11/library/turtle.html#turtle.colormode)).11071108**`pencolor(r, g, b)`**11091110Задаёт цвет пера по цвету RGB, заданному *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode.11111112Если форма черепахи (turtleshape) является многоугольником, то контур этого многоугольника рисуется вновь заданным цветом пера.11131114```pycon1115>>> colormode()11161.01117>>> turtle.pencolor()1118'red'1119>>> turtle.pencolor("brown")1120>>> turtle.pencolor()1121'brown'1122>>> tup = (0.2, 0.8, 0.55)1123>>> turtle.pencolor(tup)1124>>> turtle.pencolor()1125(0.2, 0.8, 0.5490196078431373)1126>>> colormode(255)1127>>> turtle.pencolor()1128(51.0, 204.0, 140.0)1129>>> turtle.pencolor('#32c18f')1130>>> turtle.pencolor()1131(50.0, 193.0, 143.0)1132```11331134#### `turtle.fillcolor(*args)`11351136Возвращает или задаёт цвет заливки.11371138Допускаются четыре формата ввода:11391140**`fillcolor()`**11411142Возвращает текущий fillcolor в виде строки спецификации цвета, возможно в формате кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.11431144**`fillcolor(colorstring)`**11451146Задаёт цвет заливки равным *colorstring*, строке описания цвета Tk, например, `"red"`, `"yellow"` или `"#33cc8c"`.11471148**`fillcolor((r, g, b))`**11491150Задаёт цвет заливки по цвету RGB, представленному кортежем из *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode, где colormode равен 1.0 или 255 (см. [`colormode()`](https://python-all.ru/3.11/library/turtle.html#turtle.colormode)).11511152**`fillcolor(r, g, b)`**11531154Задаёт цвет заливки по цвету RGB, заданному *r*, *g* и *b*. Каждое из значений *r*, *g* и *b* должно быть в диапазоне 0..colormode.11551156Если форма черепахи (turtleshape) является многоугольником, то внутренняя область этого многоугольника закрашивается вновь заданным цветом заливки.11571158```pycon1159>>> turtle.fillcolor("violet")1160>>> turtle.fillcolor()1161'violet'1162>>> turtle.pencolor()1163(50.0, 193.0, 143.0)1164>>> turtle.fillcolor((50, 193, 143))  # Целые числа, не числа с плавающей точкой1165>>> turtle.fillcolor()1166(50.0, 193.0, 143.0)1167>>> turtle.fillcolor('#ffffff')1168>>> turtle.fillcolor()1169(255.0, 255.0, 255.0)1170```11711172#### `turtle.color(*args)`11731174Возвращает или задаёт цвет пера и цвет заливки.11751176Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:11771178**`color()`**11791180Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или кортежей с описанием цвета, как в [`pencolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.pencolor) и [`fillcolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.fillcolor).11811182**`color(colorstring)`, `color((r,g,b))`, `color(r,g,b)`**11831184Аргументы как в [`pencolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.pencolor); устанавливает и fillcolor, и pencolor в указанное значение.11851186**`color(colorstring1, colorstring2)`, `color((r1,g1,b1), (r2,g2,b2))`**11871188Эквивалентно `pencolor(colorstring1)` и `fillcolor(colorstring2)`, а также аналогично при использовании другого формата ввода.11891190Если форма черепахи – многоугольник, его контур и внутренняя область рисуются новыми установленными цветами.11911192```pycon1193>>> turtle.color("red", "green")1194>>> turtle.color()1195('red', 'green')1196>>> color("#285078", "#a0c8f0")1197>>> color()1198((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))1199```12001201См. также: метод Screen [`colormode()`](https://python-all.ru/3.11/library/turtle.html#turtle.colormode).12021203#### Заливка12041205#### `turtle.filling()`12061207Возвращает состояние заливки (`True`, если заливка активна, иначе `False`).12081209```pycon1210>>> turtle.begin_fill()1211>>> if turtle.filling():1212...    turtle.pensize(5)1213... else:1214...    turtle.pensize(3)1215```12161217#### `turtle.begin_fill()`12181219Вызывается непосредственно перед рисованием фигуры, которую нужно залить.12201221#### `turtle.end_fill()`12221223Заливает фигуру, нарисованную после последнего вызова [`begin_fill()`](https://python-all.ru/3.11/library/turtle.html#turtle.begin_fill).12241225Будут ли залиты области пересечения для самопересекающихся многоугольников или нескольких фигур, зависит от графической подсистемы операционной системы, типа пересечения и количества пересечений. Например, звезда черепахи выше может быть либо полностью жёлтой, либо содержать белые области.12261227```pycon1228>>> turtle.color("black", "red")1229>>> turtle.begin_fill()1230>>> turtle.circle(80)1231>>> turtle.end_fill()1232```12331234#### Дополнительное управление рисованием12351236#### `turtle.reset()`12371238Удаляет рисунки черепахи с экрана, перемещает черепаху в центр и сбрасывает переменные в значения по умолчанию.12391240```pycon1241>>> turtle.goto(0,-22)1242>>> turtle.left(100)1243>>> turtle.position()1244(0.00,-22.00)1245>>> turtle.heading()1246100.01247>>> turtle.reset()1248>>> turtle.position()1249(0.00,0.00)1250>>> turtle.heading()12510.01252```12531254#### `turtle.clear()`12551256Удаляет рисунки черепахи с экрана. Черепаха не перемещается. Состояние и положение черепахи, а также рисунки других черепах не затрагиваются.12571258#### `turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal'))`12591260**Параметры:**12611262- **arg** – объект, который будет записан на TurtleScreen.1263- **move** – True/False1264- **align** – одна из строк: «left», «center» или «right».1265- **font** – тройка (имя\_шрифта, размер\_шрифта, тип\_шрифта)12661267Записывает текст (строковое представление *arg*) в текущей позиции черепахи в соответствии с выравниванием *align* («left», «center» или «right») и указанным шрифтом. Если *move* истинно, перо перемещается в правый нижний угол текста. По умолчанию *move* равно `False`.12681269```python1270>>> turtle.write("Home = ", True, align="center")1271>>> turtle.write((0,0), True)1272```12731274### Состояние черепахи12751276#### Видимость12771278#### `turtle.hideturtle()`12791280#### `turtle.ht()`12811282Делает черепаху невидимой. Рекомендуется делать это во время выполнения сложного рисунка, потому что скрытие черепахи заметно ускоряет рисование.12831284```pycon1285>>> turtle.hideturtle()1286```12871288#### `turtle.showturtle()`12891290#### `turtle.st()`12911292Делает черепаху видимой.12931294```pycon1295>>> turtle.showturtle()1296```12971298#### `turtle.isvisible()`12991300Возвращает `True`, если черепаха показана, и `False`, если она скрыта.13011302```python1303>>> turtle.hideturtle()1304>>> turtle.isvisible()1305False1306>>> turtle.showturtle()1307>>> turtle.isvisible()1308True1309```13101311#### Внешний вид13121313#### `turtle.shape(name=None)`13141315**Параметры:**13161317**name** – a string which is a valid shapename13181319Устанавливает форму черепахи как форму с заданным *name* или, если имя не указано, возвращает имя текущей формы. Форма с именем *name* должна существовать в словаре форм TurtleScreen. Изначально доступны следующие многоугольные формы: «стрелка», «черепаха», «круг», «квадрат», «треугольник», «классическая». Чтобы узнать, как работать с формами, см. метод Screen [`register_shape()`](https://python-all.ru/3.11/library/turtle.html#turtle.register_shape).13201321```pycon1322>>> turtle.shape()1323'classic'1324>>> turtle.shape("turtle")1325>>> turtle.shape()1326'turtle'1327```13281329#### `turtle.resizemode(rmode=None)`13301331**Параметры:**13321333**rmode** – one of the strings “auto”, “user”, “noresize”13341335Устанавливает режим изменения размера в одно из значений: «авто», «пользователь», «без изменения размера». Если *rmode* не указан, возвращает текущий режим изменения размера. Разные режимы изменения размера имеют следующие эффекты:13361337- “auto”: adapts the appearance of the turtle corresponding to the value of pensize.1338- “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.11/library/turtle.html#turtle.shapesize).1339- «без изменения размера»: адаптация внешнего вида черепахи не производится.13401341`resizemode("user")` вызывается [`shapesize()`](https://python-all.ru/3.11/library/turtle.html#turtle.shapesize) при использовании с аргументами.13421343```pycon1344>>> turtle.resizemode()1345'noresize'1346>>> turtle.resizemode("auto")1347>>> turtle.resizemode()1348'auto'1349```13501351#### `turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)`13521353#### `turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)`13541355**Параметры:**13561357- **stretch\_wid** – положительное число1358- **stretch\_len** – положительное число1359- **outline** – положительное число13601361Возвращает или задаёт атрибуты пера: коэффициенты растяжения по x/y и/или контур. Устанавливает режим изменения размера в «пользователь». Если и только если режим изменения размера установлен в «пользователь», черепаха будет отображаться растянутой в соответствии с её коэффициентами растяжения: *stretch\_wid* – коэффициент растяжения перпендикулярно её ориентации, *stretch\_len* – коэффициент растяжения в направлении её ориентации, *outline* определяет ширину контура формы.13621363```pycon1364>>> turtle.shapesize()1365(1.0, 1.0, 1)1366>>> turtle.resizemode("user")1367>>> turtle.shapesize(5, 5, 12)1368>>> turtle.shapesize()1369(5, 5, 12)1370>>> turtle.shapesize(outline=8)1371>>> turtle.shapesize()1372(5, 5, 8)1373```13741375#### `turtle.shearfactor(shear=None)`13761377**Параметры:**13781379**shear** – число (необязательно)13801381Set 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.13821383```pycon1384>>> turtle.shape("circle")1385>>> turtle.shapesize(5,2)1386>>> turtle.shearfactor(0.5)1387>>> turtle.shearfactor()13880.51389```13901391#### `turtle.tilt(angle)`13921393**Параметры:**13941395**angle** – a number13961397Повернуть форму черепахи на *angle* от текущего угла наклона, но *не* изменять направление черепахи (направление движения).13981399```pycon1400>>> turtle.reset()1401>>> turtle.shape("circle")1402>>> turtle.shapesize(5,2)1403>>> turtle.tilt(30)1404>>> turtle.fd(50)1405>>> turtle.tilt(30)1406>>> turtle.fd(50)1407```14081409#### `turtle.settiltangle(angle)`14101411**Параметры:**14121413**angle** – a number14141415Поворачивает форму черепашки так, чтобы она указывала в направлении, заданном *angle*, независимо от текущего угла наклона. *Не* меняет курс черепашки (направление движения).14161417```pycon1418>>> turtle.reset()1419>>> turtle.shape("circle")1420>>> turtle.shapesize(5,2)1421>>> turtle.settiltangle(45)1422>>> turtle.fd(50)1423>>> turtle.settiltangle(-45)1424>>> turtle.fd(50)1425```14261427Устарело с версии 3.1.14281429#### `turtle.tiltangle(angle=None)`14301431**Параметры:**14321433**angle** – число (необязательно)14341435Устанавливает или возвращает текущий угол наклона. Если задан угол, поворачивает форму черепахи, чтобы она указывала в направлении, заданном углом, независимо от текущего угла наклона, но *не* изменять направление черепахи (направление движения). Если угол не задан: возвращает текущий угол наклона, то есть угол между ориентацией формы черепахи и направлением черепахи (её направлением движения).14361437```pycon1438>>> turtle.reset()1439>>> turtle.shape("circle")1440>>> turtle.shapesize(5,2)1441>>> turtle.tilt(45)1442>>> turtle.tiltangle()144345.01444```14451446#### `turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)`14471448**Параметры:**14491450- **t11** – число (необязательно)1451- **t12** – число (необязательно)1452- **t21** – число (необязательно)1453- **t12** – число (необязательно)14541455Задаёт или возвращает текущую матрицу преобразования формы черепашки.14561457Если ни один из элементов матрицы не задан, возвращает матрицу преобразования в виде кортежа из 4 элементов. В противном случае задаёт указанные элементы и преобразует форму черепашки согласно матрице, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 \* t22 - t12 \* t21 не должен быть равен нулю, иначе будет вызвана ошибка. Изменяет stretchfactor, shearfactor и tiltangle в соответствии с заданной матрицей.14581459```pycon1460>>> turtle = Turtle()1461>>> turtle.shape("square")1462>>> turtle.shapesize(4,2)1463>>> turtle.shearfactor(-0.5)1464>>> turtle.shapetransform()1465(4.0, -1.0, -0.0, 2.0)1466```14671468#### `turtle.get_shapepoly()`14691470Возвращает текущий многоугольник формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.14711472```pycon1473>>> turtle.shape("square")1474>>> turtle.shapetransform(4, -1, 0, 2)1475>>> turtle.get_shapepoly()1476((50, -20), (30, 20), (-50, 20), (-30, -20))1477```14781479### Использование событий14801481#### `turtle.onclick(fun, btn=1, add=None)`14821483**Параметры:**14841485- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1486- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1487- **add**`True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку14881489Привязывает *fun* к событиям щелчка мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются. Пример для анонимной черепашки, т.е. процедурного способа:14901491```pycon1492>>> def turn(x, y):1493...     left(180)1494...1495>>> onclick(turn)  # Теперь щелчок по черепашке повернёт её.1496>>> onclick(None)  # привязка события будет удалена1497```14981499#### `turtle.onrelease(fun, btn=1, add=None)`15001501**Параметры:**15021503- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1504- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1505- **add**`True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку15061507Привязывает *fun* к событиям отпускания кнопки мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются.15081509```pycon1510>>> class MyTurtle(Turtle):1511...     def glow(self,x,y):1512...         self.fillcolor("red")1513...     def unglow(self,x,y):1514...         self.fillcolor("")1515...1516>>> turtle = MyTurtle()1517>>> turtle.onclick(turtle.glow)     # нажатие на черепашку меняет цвет заливки на красный,1518>>> turtle.onrelease(turtle.unglow) # отпускание делает его прозрачным.1519```15201521#### `turtle.ondrag(fun, btn=1, add=None)`15221523**Параметры:**15241525- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1526- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1527- **add**`True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку15281529Привязывает *fun* к событиям перемещения мыши на этой черепашке. Если *fun* равно `None`, существующие привязки удаляются.15301531Примечание: Каждая последовательность событий перемещения мыши на черепашке предваряется событием щелчка мыши на этой черепашке.15321533```pycon1534>>> turtle.ondrag(turtle.goto)1535```15361537После этого щелчок и перетаскивание черепашки будет перемещать её по экрану, создавая рисунки от руки (если перо опущено).15381539### Специальные методы черепашки15401541#### `turtle.begin_poly()`15421543Начинает запись вершин многоугольника. Текущая позиция черепашки является первой вершиной многоугольника.15441545#### `turtle.end_poly()`15461547Остановить запись вершин многоугольника. Текущая позиция черепашки – последняя вершина многоугольника. Она будет соединена с первой вершиной.15481549#### `turtle.get_poly()`15501551Возвращает последний записанный многоугольник.15521553```pycon1554>>> turtle.home()1555>>> turtle.begin_poly()1556>>> turtle.fd(100)1557>>> turtle.left(20)1558>>> turtle.fd(30)1559>>> turtle.left(60)1560>>> turtle.fd(50)1561>>> turtle.end_poly()1562>>> p = turtle.get_poly()1563>>> register_shape("myFavouriteShape", p)1564```15651566#### `turtle.clone()`15671568Создаёт и возвращает клон черепашки с теми же координатами, направлением и свойствами черепашки.15691570```pycon1571>>> mick = Turtle()1572>>> joe = mick.clone()1573```15741575#### `turtle.getturtle()`15761577#### `turtle.getpen()`15781579Возвращает сам объект Turtle. Единственное разумное применение – как функция для возврата «анонимной черепашки»:15801581```pycon1582>>> pet = getturtle()1583>>> pet.fd(50)1584>>> pet1585<turtle.Turtle object at 0x...>1586```15871588#### `turtle.getscreen()`15891590Возвращает объект [`TurtleScreen`](https://python-all.ru/3.11/library/turtle.html#turtle.TurtleScreen), на котором черепашка рисует. Затем для этого объекта можно вызывать методы TurtleScreen.15911592```pycon1593>>> ts = turtle.getscreen()1594>>> ts1595<turtle._Screen object at 0x...>1596>>> ts.bgcolor("pink")1597```15981599#### `turtle.setundobuffer(size)`16001601**Параметры:**16021603**size** – целое число или `None`16041605Устанавливает или отключает буфер отмены. Если *size* – целое число, создаётся пустой буфер отмены указанного размера. *size* задаёт максимальное количество действий черепашки, которые можно отменить с помощью метода/функции [`undo()`](https://python-all.ru/3.11/library/turtle.html#turtle.undo). Если *size* равно `None`, буфер отмены отключается.16061607```pycon1608>>> turtle.setundobuffer(42)1609```16101611#### `turtle.undobufferentries()`16121613Возвращает количество записей в буфере отмены.16141615```pycon1616>>> while undobufferentries():1617...     undo()1618```16191620### Составные фигуры16211622Для использования составных фигур черепашки, состоящих из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс [`Shape`](https://python-all.ru/3.11/library/turtle.html#turtle.Shape), как описано ниже:162316241. Создаёт пустой объект Shape типа «compound».16252. Добавьте в этот объект необходимое количество компонентов с помощью метода [`addcomponent()`](https://python-all.ru/3.11/library/turtle.html#turtle.Shape.addcomponent).16261627   Например:16281629   ```pycon1630   >>> s = Shape("compound")1631   >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))1632   >>> s.addcomponent(poly1, "red", "blue")1633   >>> poly2 = ((0,0),(10,-5),(-10,-5))1634   >>> s.addcomponent(poly2, "blue", "red")1635   ```16363. Теперь добавьте Shape в список фигур экрана и используйте его:16371638   ```pycon1639   >>> register_shape("myshape", s)1640   >>> shape("myshape")1641   ```16421643> **Примечание**1644>1645> Класс [`Shape`](https://python-all.ru/3.11/library/turtle.html#turtle.Shape) используется внутри метода [`register_shape()`](https://python-all.ru/3.11/library/turtle.html#turtle.register_shape) разными способами. Разработчику приложения приходится иметь дело с классом Shape *только* при использовании составных фигур, как показано выше!16461647## Методы TurtleScreen/Screen и соответствующие функции16481649Большинство примеров в этом разделе относятся к экземпляру TurtleScreen с именем `screen`.16501651### Управление окном16521653#### `turtle.bgcolor(*args)`16541655**Параметры:**16561657**args** – строка цвета, три числа в диапазоне от 0 до colormode или кортеж из трёх таких чисел.16581659Устанавливает или возвращает цвет фона экрана TurtleScreen.16601661```pycon1662>>> screen.bgcolor("orange")1663>>> screen.bgcolor()1664'orange'1665>>> screen.bgcolor("#800080")1666>>> screen.bgcolor()1667(128.0, 0.0, 128.0)1668```16691670#### `turtle.bgpic(picname=None)`16711672**Параметры:**16731674**picname** – строка, имя gif-файла или `"nopic"`, или `None`16751676Устанавливает фоновое изображение или возвращает имя текущего фонового изображения. Если *picname* – имя файла, устанавливает соответствующее изображение как фон. Если *picname* равно `"nopic"`, удаляет фоновое изображение, если оно есть. Если *picname* равно `None`, возвращает имя файла текущего фонового изображения.16771678```python1679>>> screen.bgpic()1680'nopic'1681>>> screen.bgpic("landscape.gif")1682>>> screen.bgpic()1683"landscape.gif"1684```16851686#### `turtle.clear()`16871688> **Примечание**1689>1690> Этот метод TurtleScreen доступен как глобальная функция только под именем `clearscreen`. Глобальная функция `clear` – другая, производная от метода Turtle `clear`.16911692#### `turtle.clearscreen()`16931694Удаляет все рисунки и всех черепах с TurtleScreen. Сбрасывает теперь пустой TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязок событий и с включённой трассировкой.16951696#### `turtle.reset()`16971698> **Примечание**1699>1700> Этот метод TurtleScreen доступен как глобальная функция только под именем `resetscreen`. Глобальная функция `reset` – это другая, производная от метода Turtle `reset`.17011702#### `turtle.resetscreen()`17031704Сбрасывает всех черепах на экране в исходное состояние.17051706#### `turtle.screensize(canvwidth=None, canvheight=None, bg=None)`17071708**Параметры:**17091710- **canvwidth** – положительное целое, новая ширина холста в пикселях1711- **canvheight** – положительное целое, новая высота холста в пикселях1712- **bg** – строка цвета или кортеж цвета, новый цвет фона17131714Если аргументы не переданы, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором рисуют черепахи. Не изменяет окно рисования. Для просмотра скрытых частей холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.17151716```python1717>>> screen.screensize()1718(400, 300)1719>>> screen.screensize(2000,1500)1720>>> screen.screensize()1721(2000, 1500)1722```17231724например, для поиска случайно сбежавшей черепахи ;-)17251726#### `turtle.setworldcoordinates(llx, lly, urx, ury)`17271728**Параметры:**17291730- **llx** – число, x-координата левого нижнего угла холста1731- **lly** – число, y-координата левого нижнего угла холста1732- **urx** – число, x-координата правого верхнего угла холста1733- **ury** – число, y-координата правого верхнего угла холста17341735Устанавливает пользовательскую систему координат и при необходимости переключается в режим «world». Это выполняет `screen.reset()`. Если режим «world» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.17361737**ВНИМАНИЕ**: в пользовательских системах координат углы могут отображаться искажёнными.17381739```pycon1740>>> screen.reset()1741>>> screen.setworldcoordinates(-50,-7.5,50,7.5)1742>>> for _ in range(72):1743...     left(10)1744...1745>>> for _ in range(8):1746...     left(45); fd(2)   # правильный восьмиугольник1747```17481749### Управление анимацией17501751#### `turtle.delay(delay=None)`17521753**Параметры:**17541755**delay** – положительное целое17561757Устанавливает или возвращает задержку *delay* рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.17581759Необязательный аргумент:17601761```pycon1762>>> screen.delay()1763101764>>> screen.delay(5)1765>>> screen.delay()176651767```17681769#### `turtle.tracer(n=None, delay=None)`17701771**Параметры:**17721773- **n** – неотрицательное целое число1774- **delay** – неотрицательное целое число17751776Включает или выключает анимацию черепашки и устанавливает задержку для обновления рисунков. Если задан *n*, то реально выполняется только каждое n-е обычное обновление экрана. (Может использоваться для ускорения рисования сложной графики.) При вызове без аргументов возвращает текущее сохранённое значение n. Второй аргумент задаёт значение задержки (см. [`delay()`](https://python-all.ru/3.11/library/turtle.html#turtle.delay)).17771778```pycon1779>>> screen.tracer(8, 25)1780>>> dist = 21781>>> for i in range(200):1782...     fd(dist)1783...     rt(90)1784...     dist += 21785```17861787#### `turtle.update()`17881789Выполняет обновление TurtleScreen. Используется, когда tracer выключен.17901791См. также метод [`speed()`](https://python-all.ru/3.11/library/turtle.html#turtle.speed) RawTurtle/Turtle.17921793### Использование событий экрана17941795#### `turtle.listen(xdummy=None, ydummy=None)`17961797Устанавливает фокус на TurtleScreen (для сбора событий клавиш). Фиктивные аргументы предусмотрены, чтобы можно было передать [`listen()`](https://python-all.ru/3.11/library/turtle.html#turtle.listen) методу onclick.17981799#### `turtle.onkey(fun, key)`18001801#### `turtle.onkeyrelease(fun, key)`18021803**Параметры:**18041805- **fun** – функция без аргументов или `None`1806- **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”)18071808Привязывает *fun* к событию отпускания клавиши key. Если *fun* равен `None`, привязки событий удаляются. Замечание: для регистрации событий клавиш TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.11/library/turtle.html#turtle.listen).)18091810```pycon1811>>> def f():1812...     fd(50)1813...     lt(60)1814...1815>>> screen.onkey(f, "Up")1816>>> screen.listen()1817```18181819#### `turtle.onkeypress(fun, key=None)`18201821**Параметры:**18221823- **fun** – функция без аргументов или `None`1824- **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”)18251826Привязывает *fun* к событию нажатия клавиши key, если key задан, или к любому событию нажатия клавиши, если key не задан. Замечание: для регистрации событий клавиш TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.11/library/turtle.html#turtle.listen).)18271828```pycon1829>>> def f():1830...     fd(50)1831...1832>>> screen.onkey(f, "Up")1833>>> screen.listen()1834```18351836#### `turtle.onclick(fun, btn=1, add=None)`18371838#### `turtle.onscreenclick(fun, btn=1, add=None)`18391840**Параметры:**18411842- **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте1843- **btn** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши)1844- **add**`True` или `False` – если `True`, будет добавлена новая привязка, иначе она заменит предыдущую привязку18451846Привязывает *fun* к событиям щелчка мыши на этом экране. Если *fun* равен `None`, существующие привязки удаляются.18471848Пример для экземпляра TurtleScreen с именем `screen` и экземпляра Turtle с именем `turtle`:18491850```pycon1851>>> screen.onclick(turtle.goto) # Последующий щелчок по TurtleScreen заставит1852>>>                             # черепашку переместиться в точку щелчка.1853>>> screen.onclick(None)        # снова удалить привязку события1854```18551856> **Примечание**1857>1858> Этот метод TurtleScreen доступен как глобальная функция только под именем `onscreenclick`. Глобальная функция `onclick` – это другая, производная от метода Turtle `onclick`.18591860#### `turtle.ontimer(fun, t=0)`18611862**Параметры:**18631864- **fun** – функция без аргументов1865- **t** – число \>= 018661867Устанавливает таймер, который вызывает *fun* через *t* миллисекунд.18681869```pycon1870>>> running = True1871>>> def f():1872...     if running:1873...         fd(50)1874...         lt(60)1875...         screen.ontimer(f, 250)1876>>> f()   ### заставляет черепашку обходить вокруг1877>>> running = False1878```18791880#### `turtle.mainloop()`18811882#### `turtle.done()`18831884Запускает цикл событий – вызывает функцию mainloop из Tkinter. Должна быть последней инструкцией в программе с черепашьей графикой. Должна *не* использоваться, если скрипт запускается из IDLE в режиме -n (без подпроцесса) – для интерактивного использования черепашьей графики.18851886```python1887>>> screen.mainloop()1888```18891890### Методы ввода18911892#### `turtle.textinput(title, prompt)`18931894**Параметры:**18951896- **title** – строка1897- **prompt** – строка18981899Отображает диалоговое окно для ввода строки. Параметр title – заголовок диалогового окна, prompt – текст, в основном описывающий, какую информацию нужно ввести. Возвращает введённую строку. Если диалог отменён, возвращает `None`.19001901```python1902>>> screen.textinput("NIM", "Name of first player:")1903```19041905#### `turtle.numinput(title, prompt, default=None, minval=None, maxval=None)`19061907**Параметры:**19081909- **title** – строка1910- **prompt** – строка1911- **default** – число (необязательно)1912- **minval** – число (необязательно)1913- **maxval** – число (необязательно)19141915Отображает диалоговое окно для ввода числа. title – заголовок диалогового окна, prompt – текст, в основном описывающий, какую числовую информацию нужно ввести. default – значение по умолчанию, minval – минимальное значение для ввода, maxval – максимальное значение для ввода. Введённое число должно находиться в диапазоне от minval до maxval, если эти значения заданы. Если нет, выводится подсказка, и диалог остаётся открытым для исправления. Возвращает введённое число. Если диалог отменён, возвращает `None`.19161917```python1918>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)1919```19201921### Настройки и специальные методы19221923#### `turtle.mode(mode=None)`19241925**Параметры:**19261927**mode** – одна из строк “standard”, “logo” или “world”19281929Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если режим не задан, возвращается текущий режим.19301931Режим “standard” совместим со старой [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle). Режим “logo” совместим с большинством черепашьих графических средств Logo. Режим “world” использует заданные пользователем «мировые координаты». **Внимание**: в этом режиме углы выглядят искажёнными, если `x/y` коэффициент единицы измерения не равен 1.19321933| Режим | Начальное направление черепахи | положительные углы |1934| --- | --- | --- |1935| “standard” | вправо (восток) | против часовой стрелки |1936| “logo” | вверх (север) | по часовой стрелке |19371938```pycon1939>>> mode("logo")   # сбрасывает направление черепашки на север1940>>> mode()1941'logo'1942```19431944#### `turtle.colormode(cmode=None)`19451946**Параметры:**19471948**cmode** – одно из значений 1.0 или 25519491950Возвращает цветовой режим или устанавливает его в 1.0 или 255. Впоследствии значения *r*, *g*, *b* цветовых троек должны находиться в диапазоне от 0 до \*cmode\*.19511952```pycon1953>>> screen.colormode(1)1954>>> turtle.pencolor(240, 160, 80)1955Traceback (most recent call last):1956     ...1957TurtleGraphicsError: bad color sequence: (240, 160, 80)1958>>> screen.colormode()19591.01960>>> screen.colormode(255)1961>>> screen.colormode()19622551963>>> turtle.pencolor(240,160,80)1964```19651966#### `turtle.getcanvas()`19671968Возвращает Canvas данного TurtleScreen. Полезно для тех, кто знает, что делать с Canvas из Tkinter.19691970```pycon1971>>> cv = screen.getcanvas()1972>>> cv1973<turtle.ScrolledCanvas object ...>1974```19751976#### `turtle.getshapes()`19771978Возвращает список названий всех доступных в данный момент форм черепашки.19791980```pycon1981>>> screen.getshapes()1982['arrow', 'blank', 'circle', ..., 'turtle']1983```19841985#### `turtle.register_shape(name, shape=None)`19861987#### `turtle.addshape(name, shape=None)`19881989Эту функцию можно вызвать тремя различными способами:199019911. *name* – это имя gif-файла, а *shape* – это `None`: установите соответствующую форму изображения.19921993   ```python1994   >>> screen.register_shape("turtle.gif")1995   ```19961997   > **Примечание**1998   >1999   > Формы изображений *не* поворачиваются при повороте черепашки, поэтому они не отображают направление черепашки!20002. *name* – произвольная строка, а *shape* – кортеж пар координат: устанавливает соответствующую многоугольную форму.20012002   ```pycon2003   >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))2004   ```20053. *name* – произвольная строка, а *shape* – (составной) объект [`Shape`](https://python-all.ru/3.11/library/turtle.html#turtle.Shape): устанавливает соответствующую составную форму.20062007Добавляет форму черепашки в список форм TurtleScreen. Только зарегистрированные таким образом формы можно использовать, выполнив команду `shape(shapename)`.20082009#### `turtle.turtles()`20102011Возвращает список черепашек на экране.20122013```pycon2014>>> for turtle in screen.turtles():2015...     turtle.color("red")2016```20172018#### `turtle.window_height()`20192020Возвращает высоту окна черепашки.20212022```python2023>>> screen.window_height()20244802025```20262027#### `turtle.window_width()`20282029Возвращает ширину окна черепашки.20302031```python2032>>> screen.window_width()20336402034```20352036### Методы, специфичные для Screen, не наследуемые от TurtleScreen20372038#### `turtle.bye()`20392040Закрывает окно графики черепашки.20412042#### `turtle.exitonclick()`20432044Привязывает метод `bye()` к щелчкам мыши на экране.20452046Если значение «using\_IDLE» в словаре конфигурации равно `False` (значение по умолчанию), также запускается главный цикл. Примечание: если используется IDLE с ключом `-n` (без подпроцесса), это значение следует установить в `True` в `turtle.cfg`. В этом случае собственный главный цикл IDLE активен также для клиентского скрипта.20472048#### `turtle.setup(width=_CFG['width'], height=_CFG['height'], startx=_CFG['leftright'], starty=_CFG['topbottom'])`20492050Устанавливает размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены через файл `turtle.cfg`.20512052**Параметры:**20532054- **width** – если целое число, размер в пикселях; если число с плавающей запятой, доля экрана; по умолчанию – 50% экрана.2055- **height** – если целое число, высота в пикселях; если число с плавающей запятой, доля от экрана; по умолчанию 75% экрана2056- **startx** – если положительное, начальная позиция в пикселях от левого края экрана; если отрицательное – от правого края; если `None`, окно центрируется по горизонтали2057- **starty** – если положительное, начальная позиция в пикселях от верхнего края экрана; если отрицательное – от нижнего края; если `None`, окно центрируется по вертикали20582059```pycon2060>>> screen.setup (width=200, height=200, startx=0, starty=0)2061>>>              # устанавливает окно размером 200x200 пикселей в верхнем левом углу экрана2062>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)2063>>>              # устанавливает окно 75% на 50% экрана и центрирует его2064```20652066#### `turtle.title(titlestring)`20672068**Параметры:**20692070**titlestring** – строка, отображаемая в заголовке окна черепашьей графики20712072Устанавливает заголовок окна черепашки равным *titlestring*.20732074```pycon2075>>> screen.title("Welcome to the turtle zoo!")2076```20772078## Открытые классы20792080#### `class turtle.RawTurtle(canvas)`20812082#### `class turtle.RawPen(canvas)`20832084**Параметры:**20852086**canvas**`tkinter.Canvas`, [`ScrolledCanvas`](https://python-all.ru/3.11/library/turtle.html#turtle.ScrolledCanvas) или [`TurtleScreen`](https://python-all.ru/3.11/library/turtle.html#turtle.TurtleScreen)20872088Создаёт черепашку. Объект черепашки обладает всеми методами, описанными выше как «методы Turtle/RawTurtle».20892090#### `class turtle.Turtle`20912092Подкласс RawTurtle, имеет тот же интерфейс, но рисует на объекте [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen) по умолчанию, который создаётся автоматически при первом обращении.20932094#### `class turtle.TurtleScreen(cv)`20952096**Параметры:**20972098**cv**`tkinter.Canvas`20992100Предоставляет экранно-ориентированные методы, такие как [`bgcolor()`](https://python-all.ru/3.11/library/turtle.html#turtle.bgcolor) и другие, описанные выше.21012102#### `class turtle.Screen`21032104Подкласс TurtleScreen, [дополненный четырьмя методами](https://python-all.ru/3.11/library/turtle.html#screenspecific).21052106#### `class turtle.ScrolledCanvas(master)`21072108**Параметры:**21092110**master** – виджет Tkinter, в который помещается ScrolledCanvas; например, Tkinter-холст с добавленными полосами прокрутки21112112Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве поля для черепашек.21132114#### `class turtle.Shape(type_, data)`21152116**Параметры:**21172118**type\_** – одна из строк: «polygon», «image», «compound»21192120Структура данных для описания фигур. Пара `(type_, data)` должна соответствовать следующей спецификации:21212122| *type\_* | *данные* |2123| --- | --- |2124| «polygon» | кортеж многоугольника, т.е. кортеж пар координат |2125| «image» | изображение (в таком виде используется только внутри!) |2126| «compound» | `None` (составная фигура должна строиться с помощью метода [`addcomponent()`](https://python-all.ru/3.11/library/turtle.html#turtle.Shape.addcomponent)) |21272128#### `addcomponent(poly, fill, outline, None)`21292130**Параметры:**21312132- **poly** – многоугольник, т.е. кортеж пар чисел2133- **fill** – цвет, которым будет заполнен *poly*2134- **outline** – цвет контура многоугольника (если задан)21352136Пример:21372138```pycon2139>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))2140>>> s = Shape("compound")2141>>> s.addcomponent(poly, "red", "blue")2142>>> # ... добавьте больше компонентов, а затем используйте register_shape()2143```21442145См. [Составные фигуры](https://python-all.ru/3.11/library/turtle.html#compoundshapes).21462147#### `class turtle.Vec2D(x, y)`21482149Двумерный векторный класс, используемый как вспомогательный класс для реализации graphics черепашки. Может быть полезен и для программ с графикой черепашки. Производный от tuple, так что вектор – это кортеж!21502151Предоставляет (для векторов *a*, *b* и числа *k*):21522153- `a + b` сложение векторов2154- `a - b` вычитание векторов2155- `a * b` скалярное произведение2156- `k * a` и `a * k` умножение на скаляр2157- `abs(a)` абсолютное значение a2158- `a.rotate(angle)` поворот21592160## Пояснение21612162Объект черепашки рисует на объекте экрана, и в объектно-ориентированном интерфейсе черепашки есть ряд ключевых классов, которые можно использовать для их создания и связи друг с другом.21632164Экземпляр [`Turtle`](https://python-all.ru/3.11/library/turtle.html#turtle.Turtle) автоматически создаст экземпляр [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen), если его ещё нет.21652166`Turtle` – подкласс [`RawTurtle`](https://python-all.ru/3.11/library/turtle.html#turtle.RawTurtle), который *не* создаёт автоматически поверхность для рисования – для него необходимо предоставить или создать *холст*. *Холст* может быть `tkinter.Canvas`, [`ScrolledCanvas`](https://python-all.ru/3.11/library/turtle.html#turtle.ScrolledCanvas) или [`TurtleScreen`](https://python-all.ru/3.11/library/turtle.html#turtle.TurtleScreen).21672168[`TurtleScreen`](https://python-all.ru/3.11/library/turtle.html#turtle.TurtleScreen) – основная поверхность для рисования черепашки. [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen) – подкласс `TurtleScreen` и включает [несколько дополнительных методов](https://python-all.ru/3.11/library/turtle.html#screenspecific) для управления своим внешним видом (включая размер и заголовок) и поведением. Конструктор `TurtleScreen` требует аргумент `tkinter.Canvas` или [`ScrolledCanvas`](https://python-all.ru/3.11/library/turtle.html#turtle.ScrolledCanvas).21692170Функциональный интерфейс для графики черепашки использует различные методы `Turtle` и `TurtleScreen`/`Screen`. За кулисами объект экрана автоматически создаётся при каждом вызове функции, производной от метода `Screen`. Аналогично, объект черепашки автоматически создаётся при каждом вызове любой из функций, производных от метода Turtle.21712172Для использования нескольких черепашек на одном экране необходимо использовать объектно-ориентированный интерфейс.21732174## Справка и настройка21752176### Как пользоваться справкой21772178Публичные методы классов Screen и Turtle подробно документированы через docstrings. Их можно использовать как онлайн-справку через средства помощи Python:21792180- При использовании IDLE всплывающие подсказки показывают сигнатуры и первые строки docstrings для введённых вызовов функций/методов.2181- Вызов [`help()`](https://python-all.ru/3.11/library/functions.html#help) для методов или функций отображает docstrings:21822183  ```python2184  >>> help(Screen.bgcolor)2185  Help on method bgcolor in module turtle:21862187  bgcolor(self, *args) unbound turtle.Screen method2188      Set or return backgroundcolor of the TurtleScreen.21892190      Arguments (if given): a color string or three numbers2191      in the range 0..colormode or a 3-tuple of such numbers.21922193      >>> screen.bgcolor("orange")2194      >>> screen.bgcolor()2195      "orange"2196      >>> screen.bgcolor(0.5,0,0.5)2197      >>> screen.bgcolor()2198      "#800080"21992200  >>> help(Turtle.penup)2201  Help on method penup in module turtle:22022203  penup(self) unbound turtle.Turtle method2204      Pull the pen up -- no drawing when moving.22052206      Aliases: penup | pu | up22072208      No argument22092210      >>> turtle.penup()2211  ```2212- Docstrings функций, производных от методов, имеют изменённую форму:22132214  ```python2215  >>> help(bgcolor)2216  Help on function bgcolor in module turtle:22172218  bgcolor(*args)2219      Set or return backgroundcolor of the TurtleScreen.22202221      Arguments (if given): a color string or three numbers2222      in the range 0..colormode or a 3-tuple of such numbers.22232224      Example::22252226        >>> bgcolor("orange")2227        >>> bgcolor()2228        "orange"2229        >>> bgcolor(0.5,0,0.5)2230        >>> bgcolor()2231        "#800080"22322233  >>> help(penup)2234  Help on function penup in module turtle:22352236  penup()2237      Pull the pen up -- no drawing when moving.22382239      Aliases: penup | pu | up22402241      No argument22422243      Example:2244      >>> penup()2245  ```22462247Эти изменённые docstrings создаются автоматически вместе с определениями функций, которые производятся от методов во время импорта.22482249### Перевод docstrings на разные языки22502251Существует утилита для создания словаря, ключами которого являются имена методов, а значениями – docstrings публичных методов классов Screen и Turtle.22522253#### `turtle.write_docstringdict(filename='turtle_docstringdict')`22542255**Параметры:**22562257**filename** – строка, используемая как имя файла22582259Создаёт и записывает словарь docstring в Python-скрипт с заданным именем файла. Эту функцию необходимо вызывать явно (она не используется классами графики черепашки). Словарь docstring будет записан в Python-скрипт `filename.py`. Он предназначен для использования в качестве шаблона для перевода docstrings на разные языки.22602261Если вы (или ваши студенты) хотите использовать [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle) с онлайн-справкой на вашем родном языке, необходимо перевести docstrings и сохранить полученный файл, например, как `turtle_docstringdict_german.py`.22622263Если в вашем файле `turtle.cfg` есть соответствующая запись, этот словарь будет считан на этапе импорта и заменит оригинальные англоязычные строки документации.22642265На момент написания этого текста есть словари строк документации на немецком и итальянском. (Запросы направляйте на [glingl@aon.at](https://python-all.ru/3.11/library/turtle.html).)22662267### Как настроить Screen и Turtles22682269Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить максимально возможную совместимость с ним.22702271Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или лучше соответствует вашим потребностям, например, для использования в классе, вы можете подготовить файл конфигурации `turtle.cfg`, который будет прочитан на этапе импорта и изменит конфигурацию в соответствии с его настройками.22722273Встроенная конфигурация соответствует следующему `turtle.cfg`:22742275```ini2276width = 0.52277height = 0.752278leftright = None2279topbottom = None2280canvwidth = 4002281canvheight = 3002282mode = standard2283colormode = 1.02284delay = 102285undobuffersize = 10002286shape = classic2287pencolor = black2288fillcolor = black2289resizemode = noresize2290visible = True2291language = english2292exampleturtle = turtle2293examplescreen = screen2294title = Python Turtle Graphics2295using_IDLE = False2296```22972298Краткое пояснение выбранных записей:22992300- Первые четыре строки соответствуют аргументам метода [`Screen.setup`](https://python-all.ru/3.11/library/turtle.html#turtle.setup).2301- Строки 5 и 6 соответствуют аргументам метода [`Screen.screensize`](https://python-all.ru/3.11/library/turtle.html#turtle.screensize).2302- *shape* может быть любой из встроенных форм, например: arrow, turtle и т.д. Для получения дополнительной информации попробуйте `help(shape)`.2303- Если вы хотите не использовать цвет заливки (т.е. сделать черепашку прозрачной), вы должны написать `fillcolor = ""` (но все непустые строки не должны содержать кавычки в cfg-файле).2304- Если вы хотите отразить состояние черепашки, вы должны использовать `resizemode = auto`.2305- Если вы установите, например, `language = italian`, то словарь строк документации `turtle_docstringdict_italian.py` будет загружен во время импорта (если он присутствует в пути импорта, например, в той же директории, что и [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle)).2306- Записи *exampleturtle* и *examplescreen* задают имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.2307- *using\_IDLE*: Установите это в `True`, если вы регулярно работаете с IDLE и его переключателем `-n` («нет подпроцесса»). Это предотвратит [`exitonclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.exitonclick) от входа в главный цикл.23082309Может быть файл `turtle.cfg` в каталоге, где хранится [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle), и дополнительный файл в текущем рабочем каталоге. Последний переопределит настройки первого.23102311Каталог `Lib/turtledemo` содержит файл `turtle.cfg`. Вы можете изучить его как пример и увидеть его эффекты при запуске демонстраций (желательно не из средства просмотра демонстраций).23122313## [`turtledemo`](https://python-all.ru/3.11/library/turtle.html#module-turtledemo) – Демонстрационные скрипты23142315Пакет [`turtledemo`](https://python-all.ru/3.11/library/turtle.html#module-turtledemo) включает набор демонстрационных скриптов. Эти скрипты можно запускать и просматривать с помощью поставляемого средства просмотра демонстраций следующим образом:23162317```python2318python -m turtledemo2319```23202321В качестве альтернативы вы можете запускать демонстрационные скрипты по отдельности. Например,23222323```python2324python -m turtledemo.bytedesign2325```23262327Каталог пакета [`turtledemo`](https://python-all.ru/3.11/library/turtle.html#module-turtledemo) содержит:23282329- Средство просмотра демонстраций `__main__.py`, которое можно использовать для просмотра исходного кода скриптов и одновременного их запуска.2330- Несколько скриптов, демонстрирующих различные возможности модуля [`turtle`](https://python-all.ru/3.11/library/turtle.html#module-turtle). Примеры доступны через меню Examples. Их также можно запускать отдельно.2331- Файл `turtle.cfg`, который служит примером того, как писать и использовать такие файлы.23322333Демонстрационные скрипты:23342335| Имя | Описание | Возможности |2336| --- | --- | --- |2337| bytedesign | сложный классический узор черепашьей графики | [`tracer()`](https://python-all.ru/3.11/library/turtle.html#turtle.tracer), delay, [`update()`](https://python-all.ru/3.11/library/turtle.html#turtle.update) |2338| chaos | строит график динамики Ферхюльста, показывает, что компьютерные вычисления иногда могут давать результаты, противоречащие здравому смыслу | мировые координаты |2339| clock | аналоговые часы, показывающие время вашего компьютера | черепахи как стрелки часов, ontimer |2340| colormixer | эксперимент с r, g, b | [`ondrag()`](https://python-all.ru/3.11/library/turtle.html#turtle.ondrag) |2341| forest | 3 дерева обхода в ширину | рандомизация |2342| fractalcurves | Кривые Гильберта и Коха | рекурсия |2343| lindenmayer | этноматематика (индийские коламы) | L-система |2344| minimal\_hanoi | Ханойские башни | Прямоугольные черепахи как диски Ханоя (shape, shapesize) |2345| nim | игра в классический ним с тремя кучками палочек против компьютера. | черепашки как палочки нима, событийно-ориентированное управление (мышь, клавиатура) |2346| paint | супер-минималистичная программа для рисования | [`onclick()`](https://python-all.ru/3.11/library/turtle.html#turtle.onclick) |2347| peace | элементарный | черепашка: внешний вид и анимация |2348| penrose | непериодическое замощение воздушными змеями и дротиками | [`stamp()`](https://python-all.ru/3.11/library/turtle.html#turtle.stamp) |2349| planet\_and\_moon | симуляция гравитационной системы | составные фигуры, [`Vec2D`](https://python-all.ru/3.11/library/turtle.html#turtle.Vec2D) |2350| rosette | узор из статьи в Википедии о черепашьей графике | [`clone()`](https://python-all.ru/3.11/library/turtle.html#turtle.clone), [`undo()`](https://python-all.ru/3.11/library/turtle.html#turtle.undo) |2351| round\_dance | танцующие черепашки, вращающиеся попарно в противоположных направлениях | составные фигуры, clone shapesize, tilt, get\_shapepoly, update |2352| sorting\_animate | визуальная демонстрация различных методов сортировки | простое выравнивание, рандомизация |2353| дерево | (графическое) дерево обхода в ширину (с использованием генераторов) | [`clone()`](https://python-all.ru/3.11/library/turtle.html#turtle.clone) |2354| two\_canvases | простой дизайн | черепашки на двух холстах |2355| yinyang | ещё один элементарный пример | [`circle()`](https://python-all.ru/3.11/library/turtle.html#turtle.circle) |23562357Удачи!23582359## Изменения, начиная с Python 2.623602361- Методы [`Turtle.tracer`](https://python-all.ru/3.11/library/turtle.html#turtle.tracer), [`Turtle.window_width`](https://python-all.ru/3.11/library/turtle.html#turtle.window_width) и [`Turtle.window_height`](https://python-all.ru/3.11/library/turtle.html#turtle.window_height) были удалены. Методы с такими именами и функциональностью теперь доступны только как методы [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen). Производные от них функции остаются доступными. (На самом деле уже в Python 2.6 эти методы были просто дубликатами соответствующих методов [`TurtleScreen`](https://python-all.ru/3.11/library/turtle.html#turtle.TurtleScreen)/[`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen).)2362- Метод `Turtle.fill()` был удалён. Поведение [`begin_fill()`](https://python-all.ru/3.11/library/turtle.html#turtle.begin_fill) и [`end_fill()`](https://python-all.ru/3.11/library/turtle.html#turtle.end_fill) незначительно изменилось: теперь каждый процесс заливки должен завершаться вызовом `end_fill()`.2363- Добавлен метод [`Turtle.filling`](https://python-all.ru/3.11/library/turtle.html#turtle.filling). Он возвращает булево значение: `True`, если процесс заливки выполняется, `False` в противном случае. Это поведение соответствует вызову `fill()` без аргументов в Python 2.6.23642365## Изменения, начиная с Python 3.023662367- Методы [`Turtle`](https://python-all.ru/3.11/library/turtle.html#turtle.Turtle), [`shearfactor()`](https://python-all.ru/3.11/library/turtle.html#turtle.shearfactor), [`shapetransform()`](https://python-all.ru/3.11/library/turtle.html#turtle.shapetransform) и [`get_shapepoly()`](https://python-all.ru/3.11/library/turtle.html#turtle.get_shapepoly) были добавлены. Таким образом, полный спектр обычных линейных преобразований теперь доступен для трансформации форм черепах. [`tiltangle()`](https://python-all.ru/3.11/library/turtle.html#turtle.tiltangle) был улучшен в функциональности: теперь его можно использовать для получения или установки угла наклона. [`settiltangle()`](https://python-all.ru/3.11/library/turtle.html#turtle.settiltangle) устарел.2368- Метод [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen) [`onkeypress()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkeypress) добавлен как дополнение к [`onkey()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkey). Поскольку последний привязывает действия к событию отпускания клавиши, для него также был добавлен псевдоним [`onkeyrelease()`](https://python-all.ru/3.11/library/turtle.html#turtle.onkeyrelease).2369- Метод [`Screen.mainloop`](https://python-all.ru/3.11/library/turtle.html#turtle.mainloop) добавлен, поэтому больше нет необходимости использовать отдельную функцию [`mainloop()`](https://python-all.ru/3.11/library/turtle.html#turtle.mainloop) при работе с объектами [`Screen`](https://python-all.ru/3.11/library/turtle.html#turtle.Screen) и [`Turtle`](https://python-all.ru/3.11/library/turtle.html#turtle.Turtle).2370- Добавлены два метода ввода: [`Screen.textinput`](https://python-all.ru/3.11/library/turtle.html#turtle.textinput) и [`Screen.numinput`](https://python-all.ru/3.11/library/turtle.html#turtle.numinput). Они открывают диалоговые окна ввода и возвращают строки и числа соответственно.2371- Два примера скриптов `tdemo_nim.py` и `tdemo_round_dance.py` добавлены в каталог `Lib/turtledemo`.2372