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

turtle.md

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

1> **Источник:** https://python-all.ru/3.4/library/turtle.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 24.1. [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle) – Черепашья графика89## 24.1.1. Введение1011Черепашья графика – популярный способ познакомить детей с программированием. Она была частью оригинального языка программирования Logo, разработанного Уолли Фойрцигом и Сеймуром Пейпертом в 1966 году.1213Представьте себе роботизированную черепаху, стартующую в точке (0, 0) на плоскости x-y. После `import turtle` дайте ей команду `turtle.forward(15)` – и она переместится (на экране!) на 15 пикселей в том направлении, куда смотрит, рисуя линию. Дайте ей команду `turtle.right(25)` – и она повернётся на месте на 25 градусов по часовой стрелке.1415Черепашья звезда1617Черепашка может рисовать сложные фигуры с помощью программ, повторяющих простые движения.1819![../_images/turtle-star.png](https://python-all.ru/3.4/_images/turtle-star.png)2021```python22from turtle import *23color('red', 'yellow')24begin_fill()25while True:26    forward(200)27    left(170)28    if abs(pos()) < 1:29        break30end_fill()31done()32```3334Комбинируя эти и подобные команды, можно легко рисовать сложные фигуры и картинки.3536Модуль [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle) – это расширенная переработка одноимённого модуля из стандартной поставки Python вплоть до версии Python 2.5.3738Он старается сохранить достоинства старого модуля turtle и быть (почти) на 100% совместимым с ним. Это прежде всего означает, что начинающий программист может использовать все команды, классы и методы в интерактивном режиме, работая с модулем из IDLE, запущенного с ключом `-n`.3940Модуль turtle предоставляет примитивы черепашьей графики как в объектно-ориентированном, так и в процедурном стиле. Поскольку для низкоуровневой графики он использует [`tkinter`](https://python-all.ru/3.4/library/tkinter.html#module-tkinter), необходима версия Python, установленная с поддержкой Tk.4142Объектно-ориентированный интерфейс использует, по сути, два + два класса:43441. Класс [`TurtleScreen`](https://python-all.ru/3.4/library/turtle.html#turtle.TurtleScreen) определяет графические окна как площадку для рисующих черепах. Его конструктор принимает в качестве аргумента `tkinter.Canvas` или [`ScrolledCanvas`](https://python-all.ru/3.4/library/turtle.html#turtle.ScrolledCanvas). Его следует использовать, когда [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle) применяется как часть какого-либо приложения.4546   Функция [`Screen()`](https://python-all.ru/3.4/library/turtle.html#turtle.Screen) возвращает объект-одиночку подкласса [`TurtleScreen`](https://python-all.ru/3.4/library/turtle.html#turtle.TurtleScreen). Эту функцию следует использовать, когда [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle) применяется как самостоятельное средство для рисования. Поскольку это объект-одиночка, наследование от его класса невозможно.4748   Все методы TurtleScreen/Screen также существуют в виде функций, то есть являются частью процедурно-ориентированного интерфейса.492. [`RawTurtle`](https://python-all.ru/3.4/library/turtle.html#turtle.RawTurtle) (псевдоним: [`RawPen`](https://python-all.ru/3.4/library/turtle.html#turtle.RawPen)) определяет объекты-черепахи, которые рисуют на [`TurtleScreen`](https://python-all.ru/3.4/library/turtle.html#turtle.TurtleScreen). Его конструктор принимает в качестве аргумента Canvas, ScrolledCanvas или TurtleScreen, так что объекты RawTurtle знают, где рисовать.5051   Производным от RawTurtle является подкласс [`Turtle`](https://python-all.ru/3.4/library/turtle.html#turtle.Turtle) (псевдоним: `Pen`), который рисует на экземпляре [`Screen`](https://python-all.ru/3.4/library/turtle.html#turtle.Screen), автоматически создаваемом, если его ещё нет.5253   Все методы RawTurtle/Turtle также существуют в виде функций, то есть как часть процедурно-ориентированного интерфейса.5455Процедурный интерфейс предоставляет функции, производные от методов классов [`Screen`](https://python-all.ru/3.4/library/turtle.html#turtle.Screen) и [`Turtle`](https://python-all.ru/3.4/library/turtle.html#turtle.Turtle). Они имеют те же имена, что и соответствующие методы. Объект экрана создаётся автоматически при каждом вызове функции, производной от метода Screen. (Безымянный) объект черепахи создаётся автоматически при вызове любой функции, производной от метода Turtle.5657Чтобы использовать несколько черепах на одном экране, необходимо применять объектно-ориентированный интерфейс.5859> **Примечание**60>61> В следующей документации приведён список аргументов для функций. Методы, конечно, имеют дополнительный первый аргумент *self*, который здесь опущен.6263## 24.1.2. Обзор доступных методов Turtle и Screen6465### 24.1.2.1. Методы Turtle6667**Движение черепахи**6869**Перемещение и рисование**7071[`forward()`](https://python-all.ru/3.4/library/turtle.html#turtle.forward)7273|7475[`fd()`](https://python-all.ru/3.4/library/turtle.html#turtle.fd)7677[`backward()`](https://python-all.ru/3.4/library/turtle.html#turtle.backward)7879|8081[`bk()`](https://python-all.ru/3.4/library/turtle.html#turtle.bk)8283|8485[`back()`](https://python-all.ru/3.4/library/turtle.html#turtle.back)8687[`right()`](https://python-all.ru/3.4/library/turtle.html#turtle.right)8889|9091[`rt()`](https://python-all.ru/3.4/library/turtle.html#turtle.rt)9293[`left()`](https://python-all.ru/3.4/library/turtle.html#turtle.left)9495|9697[`lt()`](https://python-all.ru/3.4/library/turtle.html#turtle.lt)9899[`goto()`](https://python-all.ru/3.4/library/turtle.html#turtle.goto)100101|102103[`setpos()`](https://python-all.ru/3.4/library/turtle.html#turtle.setpos)104105|106107[`setposition()`](https://python-all.ru/3.4/library/turtle.html#turtle.setposition)108109[`setx()`](https://python-all.ru/3.4/library/turtle.html#turtle.setx)110111[`sety()`](https://python-all.ru/3.4/library/turtle.html#turtle.sety)112113[`setheading()`](https://python-all.ru/3.4/library/turtle.html#turtle.setheading)114115|116117[`seth()`](https://python-all.ru/3.4/library/turtle.html#turtle.seth)118119[`home()`](https://python-all.ru/3.4/library/turtle.html#turtle.home)120121[`circle()`](https://python-all.ru/3.4/library/turtle.html#turtle.circle)122123[`dot()`](https://python-all.ru/3.4/library/turtle.html#turtle.dot)124125[`stamp()`](https://python-all.ru/3.4/library/turtle.html#turtle.stamp)126127[`clearstamp()`](https://python-all.ru/3.4/library/turtle.html#turtle.clearstamp)128129[`clearstamps()`](https://python-all.ru/3.4/library/turtle.html#turtle.clearstamps)130131[`undo()`](https://python-all.ru/3.4/library/turtle.html#turtle.undo)132133[`speed()`](https://python-all.ru/3.4/library/turtle.html#turtle.speed)134135**Состояние черепахи**136137[`position()`](https://python-all.ru/3.4/library/turtle.html#turtle.position)138139|140141[`pos()`](https://python-all.ru/3.4/library/turtle.html#turtle.pos)142143[`towards()`](https://python-all.ru/3.4/library/turtle.html#turtle.towards)144145[`xcor()`](https://python-all.ru/3.4/library/turtle.html#turtle.xcor)146147[`ycor()`](https://python-all.ru/3.4/library/turtle.html#turtle.ycor)148149[`heading()`](https://python-all.ru/3.4/library/turtle.html#turtle.heading)150151[`distance()`](https://python-all.ru/3.4/library/turtle.html#turtle.distance)152153**Настройка и измерение**154155[`degrees()`](https://python-all.ru/3.4/library/turtle.html#turtle.degrees)156157[`radians()`](https://python-all.ru/3.4/library/turtle.html#turtle.radians)158159**Управление пером**160161**Состояние рисования**162163[`pendown()`](https://python-all.ru/3.4/library/turtle.html#turtle.pendown)164165|166167[`pd()`](https://python-all.ru/3.4/library/turtle.html#turtle.pd)168169|170171[`down()`](https://python-all.ru/3.4/library/turtle.html#turtle.down)172173[`penup()`](https://python-all.ru/3.4/library/turtle.html#turtle.penup)174175|176177[`pu()`](https://python-all.ru/3.4/library/turtle.html#turtle.pu)178179|180181[`up()`](https://python-all.ru/3.4/library/turtle.html#turtle.up)182183[`pensize()`](https://python-all.ru/3.4/library/turtle.html#turtle.pensize)184185|186187[`width()`](https://python-all.ru/3.4/library/turtle.html#turtle.width)188189[`pen()`](https://python-all.ru/3.4/library/turtle.html#turtle.pen)190191[`isdown()`](https://python-all.ru/3.4/library/turtle.html#turtle.isdown)192193**Управление цветом**194195[`color()`](https://python-all.ru/3.4/library/turtle.html#turtle.color)196197[`pencolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.pencolor)198199[`fillcolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.fillcolor)200201**Заливка**202203[`filling()`](https://python-all.ru/3.4/library/turtle.html#turtle.filling)204205[`begin_fill()`](https://python-all.ru/3.4/library/turtle.html#turtle.begin_fill)206207[`end_fill()`](https://python-all.ru/3.4/library/turtle.html#turtle.end_fill)208209**Дополнительное управление рисованием**210211[`reset()`](https://python-all.ru/3.4/library/turtle.html#turtle.reset)212213[`clear()`](https://python-all.ru/3.4/library/turtle.html#turtle.clear)214215[`write()`](https://python-all.ru/3.4/library/turtle.html#turtle.write)216217**Состояние черепахи**218219**Видимость**220221[`showturtle()`](https://python-all.ru/3.4/library/turtle.html#turtle.showturtle)222223|224225[`st()`](https://python-all.ru/3.4/library/turtle.html#turtle.st)226227[`hideturtle()`](https://python-all.ru/3.4/library/turtle.html#turtle.hideturtle)228229|230231[`ht()`](https://python-all.ru/3.4/library/turtle.html#turtle.ht)232233[`isvisible()`](https://python-all.ru/3.4/library/turtle.html#turtle.isvisible)234235**Внешний вид**236237[`shape()`](https://python-all.ru/3.4/library/turtle.html#turtle.shape)238239[`resizemode()`](https://python-all.ru/3.4/library/turtle.html#turtle.resizemode)240241[`shapesize()`](https://python-all.ru/3.4/library/turtle.html#turtle.shapesize)242243|244245[`turtlesize()`](https://python-all.ru/3.4/library/turtle.html#turtle.turtlesize)246247[`shearfactor()`](https://python-all.ru/3.4/library/turtle.html#turtle.shearfactor)248249[`settiltangle()`](https://python-all.ru/3.4/library/turtle.html#turtle.settiltangle)250251[`tiltangle()`](https://python-all.ru/3.4/library/turtle.html#turtle.tiltangle)252253[`tilt()`](https://python-all.ru/3.4/library/turtle.html#turtle.tilt)254255[`shapetransform()`](https://python-all.ru/3.4/library/turtle.html#turtle.shapetransform)256257[`get_shapepoly()`](https://python-all.ru/3.4/library/turtle.html#turtle.get_shapepoly)258259**Использование событий**260261[`onclick()`](https://python-all.ru/3.4/library/turtle.html#turtle.onclick)262263[`onrelease()`](https://python-all.ru/3.4/library/turtle.html#turtle.onrelease)264265[`ondrag()`](https://python-all.ru/3.4/library/turtle.html#turtle.ondrag)266267**Специальные методы черепахи**268269[`begin_poly()`](https://python-all.ru/3.4/library/turtle.html#turtle.begin_poly)270271[`end_poly()`](https://python-all.ru/3.4/library/turtle.html#turtle.end_poly)272273[`get_poly()`](https://python-all.ru/3.4/library/turtle.html#turtle.get_poly)274275[`clone()`](https://python-all.ru/3.4/library/turtle.html#turtle.clone)276277[`getturtle()`](https://python-all.ru/3.4/library/turtle.html#turtle.getturtle)278279|280281[`getpen()`](https://python-all.ru/3.4/library/turtle.html#turtle.getpen)282283[`getscreen()`](https://python-all.ru/3.4/library/turtle.html#turtle.getscreen)284285[`setundobuffer()`](https://python-all.ru/3.4/library/turtle.html#turtle.setundobuffer)286287[`undobufferentries()`](https://python-all.ru/3.4/library/turtle.html#turtle.undobufferentries)288289### 24.1.2.2. Методы TurtleScreen/Screen290291**Управление окном**292293[`bgcolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.bgcolor)294295[`bgpic()`](https://python-all.ru/3.4/library/turtle.html#turtle.bgpic)296297[`clear()`](https://python-all.ru/3.4/library/turtle.html#turtle.clear)298299|300301[`clearscreen()`](https://python-all.ru/3.4/library/turtle.html#turtle.clearscreen)302303[`reset()`](https://python-all.ru/3.4/library/turtle.html#turtle.reset)304305|306307[`resetscreen()`](https://python-all.ru/3.4/library/turtle.html#turtle.resetscreen)308309[`screensize()`](https://python-all.ru/3.4/library/turtle.html#turtle.screensize)310311[`setworldcoordinates()`](https://python-all.ru/3.4/library/turtle.html#turtle.setworldcoordinates)312313**Управление анимацией**314315[`delay()`](https://python-all.ru/3.4/library/turtle.html#turtle.delay)316317[`tracer()`](https://python-all.ru/3.4/library/turtle.html#turtle.tracer)318319[`update()`](https://python-all.ru/3.4/library/turtle.html#turtle.update)320321**Использование событий экрана**322323[`listen()`](https://python-all.ru/3.4/library/turtle.html#turtle.listen)324325[`onkey()`](https://python-all.ru/3.4/library/turtle.html#turtle.onkey)326327|328329[`onkeyrelease()`](https://python-all.ru/3.4/library/turtle.html#turtle.onkeyrelease)330331[`onkeypress()`](https://python-all.ru/3.4/library/turtle.html#turtle.onkeypress)332333[`onclick()`](https://python-all.ru/3.4/library/turtle.html#turtle.onclick)334335|336337[`onscreenclick()`](https://python-all.ru/3.4/library/turtle.html#turtle.onscreenclick)338339[`ontimer()`](https://python-all.ru/3.4/library/turtle.html#turtle.ontimer)340341[`mainloop()`](https://python-all.ru/3.4/library/turtle.html#turtle.mainloop)342343|344345[`done()`](https://python-all.ru/3.4/library/turtle.html#turtle.done)346347**Настройки и специальные методы**348349[`mode()`](https://python-all.ru/3.4/library/turtle.html#turtle.mode)350351[`colormode()`](https://python-all.ru/3.4/library/turtle.html#turtle.colormode)352353[`getcanvas()`](https://python-all.ru/3.4/library/turtle.html#turtle.getcanvas)354355[`getshapes()`](https://python-all.ru/3.4/library/turtle.html#turtle.getshapes)356357[`register_shape()`](https://python-all.ru/3.4/library/turtle.html#turtle.register_shape)358359|360361[`addshape()`](https://python-all.ru/3.4/library/turtle.html#turtle.addshape)362363[`turtles()`](https://python-all.ru/3.4/library/turtle.html#turtle.turtles)364365[`window_height()`](https://python-all.ru/3.4/library/turtle.html#turtle.window_height)366367[`window_width()`](https://python-all.ru/3.4/library/turtle.html#turtle.window_width)368369**Методы ввода**370371[`textinput()`](https://python-all.ru/3.4/library/turtle.html#turtle.textinput)372373[`numinput()`](https://python-all.ru/3.4/library/turtle.html#turtle.numinput)374375**Методы, специфичные для Screen**376377[`bye()`](https://python-all.ru/3.4/library/turtle.html#turtle.bye)378379[`exitonclick()`](https://python-all.ru/3.4/library/turtle.html#turtle.exitonclick)380381[`setup()`](https://python-all.ru/3.4/library/turtle.html#turtle.setup)382383[`title()`](https://python-all.ru/3.4/library/turtle.html#turtle.title)384385## 24.1.3. Методы RawTurtle/Turtle и соответствующие функции386387Большинство примеров в этом разделе ссылаются на экземпляр Turtle с именем `turtle`.388389### 24.1.3.1. Движение черепашки390391#### `turtle.forward(distance)`392393#### `turtle.fd(distance)`394395| Параметры: | **distance** – число (целое или с плавающей запятой) |396| --- | --- |397398Перемещает черепаху вперед на указанное *distance*, в направлении, в котором черепаха смотрит.399400```python401>>> turtle.position()402(0.00,0.00)403>>> turtle.forward(25)404>>> turtle.position()405(25.00,0.00)406>>> turtle.forward(-75)407>>> turtle.position()408(-50.00,0.00)409```410411#### `turtle.back(distance)`412413#### `turtle.bk(distance)`414415#### `turtle.backward(distance)`416417| Параметры: | **distance** – число |418| --- | --- |419420Перемещает черепаху назад на *расстояние*, противоположно направлению, в котором черепаха смотрит. Направление черепахи не меняется.421422```python423>>> turtle.position()424(0.00,0.00)425>>> turtle.backward(30)426>>> turtle.position()427(-30.00,0.00)428```429430#### `turtle.right(angle)`431432#### `turtle.rt(angle)`433434| Параметры: | **angle** – число (целое или с плавающей запятой) |435| --- | --- |436437Поворачивает черепаху вправо на *angle* единиц. (По умолчанию единицы – градусы, но можно задать с помощью функций [`degrees()`](https://python-all.ru/3.4/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.4/library/turtle.html#turtle.radians).) Ориентация угла зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.4/library/turtle.html#turtle.mode).438439```python440>>> turtle.heading()44122.0442>>> turtle.right(45)443>>> turtle.heading()444337.0445```446447#### `turtle.left(angle)`448449#### `turtle.lt(angle)`450451| Параметры: | **angle** – число (целое или с плавающей запятой) |452| --- | --- |453454Поворачивает черепаху влево на *angle* единиц. (По умолчанию единицы – градусы, но можно задать с помощью функций [`degrees()`](https://python-all.ru/3.4/library/turtle.html#turtle.degrees) и [`radians()`](https://python-all.ru/3.4/library/turtle.html#turtle.radians).) Ориентация угла зависит от режима черепахи, см. [`mode()`](https://python-all.ru/3.4/library/turtle.html#turtle.mode).455456```python457>>> turtle.heading()45822.0459>>> turtle.left(45)460>>> turtle.heading()46167.0462```463464#### `turtle.goto(x, y=None)`465466#### `turtle.setpos(x, y=None)`467468#### `turtle.setposition(x, y=None)`469470| Параметры: | **x** – число или пара/вектор чисел **y** – число или `None` |471| --- | --- |472473Если *y* равен `None`, то *x* должен быть парой координат или [`Vec2D`](https://python-all.ru/3.4/library/turtle.html#turtle.Vec2D) (например, возвращаемым функцией [`pos()`](https://python-all.ru/3.4/library/turtle.html#turtle.pos)).474475Перемещает черепаху в абсолютную позицию. Если перо опущено, рисует линию. Направление черепахи не меняется.476477```python478>>> tp = turtle.pos()479>>> tp480(0.00,0.00)481>>> turtle.setpos(60,30)482>>> turtle.pos()483(60.00,30.00)484>>> turtle.setpos((20,80))485>>> turtle.pos()486(20.00,80.00)487>>> turtle.setpos(tp)488>>> turtle.pos()489(0.00,0.00)490```491492#### `turtle.setx(x)`493494| Параметры: | **x** – число (целое или с плавающей запятой) |495| --- | --- |496497Устанавливает первую координату черепахи в *x*, вторая координата остается без изменений.498499```python500>>> turtle.position()501(0.00,240.00)502>>> turtle.setx(10)503>>> turtle.position()504(10.00,240.00)505```506507#### `turtle.sety(y)`508509| Параметры: | **y** – число (целое или с плавающей запятой) |510| --- | --- |511512Устанавливает вторую координату черепахи в *y*, первая координата остается без изменений.513514```python515>>> turtle.position()516(0.00,40.00)517>>> turtle.sety(-10)518>>> turtle.position()519(0.00,-10.00)520```521522#### `turtle.setheading(to_angle)`523524#### `turtle.seth(to_angle)`525526| Параметры: | **to\_angle** – число (целое или с плавающей запятой) |527| --- | --- |528529Устанавливает направление черепахи в *to\_angle*. Вот некоторые распространенные направления в градусах:530531| стандартный режим | режим Logo |532| --- | --- |533| 0 – восток | 0 – север |534| 90 – север | 90 – восток |535| 180 – запад | 180 – юг |536| 270 – юг | 270 – запад |537538```python539>>> turtle.setheading(90)540>>> turtle.heading()54190.0542```543544#### `turtle.home()`545546Перемещает черепаху в начало координат – (0,0) – и устанавливает её направление в начальную ориентацию (которая зависит от режима, см. [`mode()`](https://python-all.ru/3.4/library/turtle.html#turtle.mode)).547548```python549>>> turtle.heading()55090.0551>>> turtle.position()552(0.00,-10.00)553>>> turtle.home()554>>> turtle.position()555(0.00,0.00)556>>> turtle.heading()5570.0558```559560#### `turtle.circle(radius, extent=None, steps=None)`561562| Параметры: | **radius** – число **extent** – число (или `None`) **steps** – целое число (или `None`) |563| --- | --- |564565Рисует окружность с заданным *radius*. Центр находится на *radius* единиц левее черепахи; *extent* – угол – определяет, какая часть окружности рисуется. Если *extent* не указан, рисуется вся окружность. Если *extent* не является полной окружностью, одна из конечных точек дуги – это текущее положение пера. Дуга рисуется против часовой стрелки, если *radius* положительный, и по часовой стрелке в противном случае. В конце направление черепахи изменяется на величину *extent*.566567Поскольку окружность аппроксимируется вписанным правильным многоугольником, *steps* определяет количество используемых шагов. Если не указано, вычисляется автоматически. Может использоваться для рисования правильных многоугольников.568569```python570>>> turtle.home()571>>> turtle.position()572(0.00,0.00)573>>> turtle.heading()5740.0575>>> turtle.circle(50)576>>> turtle.position()577(-0.00,0.00)578>>> turtle.heading()5790.0580>>> turtle.circle(120, 180)  # нарисовать полуокружность581>>> turtle.position()582(0.00,240.00)583>>> turtle.heading()584180.0585```586587#### `turtle.dot(size=None, *color)`588589| Параметры: | **size** – целое число \>= 1 (если указано) **color** – строка цвета или кортеж числовых цветов |590| --- | --- |591592Рисует круглую точку диаметром *size*, используя *color*. Если *size* не указан, используется максимальное из pensize+4 и 2\*pensize.593594```python595>>> turtle.home()596>>> turtle.dot()597>>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50)598>>> turtle.position()599(100.00,-0.00)600>>> turtle.heading()6010.0602```603604#### `turtle.stamp()`605606Отпечатывает копию формы черепашки на холсте в текущей позиции черепашки. Возвращает stamp\_id для этого отпечатка, который можно использовать для его удаления вызовом `clearstamp(stamp_id)`.607608```python609>>> turtle.color("blue")610>>> turtle.stamp()61111612>>> turtle.fd(50)613```614615#### `turtle.clearstamp(stampid)`616617| Параметры: | **stampid** – целое число, должно быть возвращаемым значением предыдущего вызова [`stamp()`](https://python-all.ru/3.4/library/turtle.html#turtle.stamp) |618| --- | --- |619620Удаляет печать с заданным *stampid*.621622```python623>>> turtle.position()624(150.00,-0.00)625>>> turtle.color("blue")626>>> astamp = turtle.stamp()627>>> turtle.fd(50)628>>> turtle.position()629(200.00,-0.00)630>>> turtle.clearstamp(astamp)631>>> turtle.position()632(200.00,-0.00)633```634635#### `turtle.clearstamps(n=None)`636637| Параметры: | **n** – целое число (или `None`) |638| --- | --- |639640Удаляет все или первые/последние *n* отпечатков черепашки. Если *n* равно None, удаляет все отпечатки, если *n* \> 0, удаляет первые *n* отпечатков, если *n* \< 0, удаляет последние *n* отпечатков.641642```python643>>> for i in range(8):644...     turtle.stamp(); turtle.fd(30)6451364614647156481664917650186511965220653>>> turtle.clearstamps(2)654>>> turtle.clearstamps(-2)655>>> turtle.clearstamps()656```657658#### `turtle.undo()`659660Отменяет (повторно) последнее(ие) действие(я) черепашки. Количество доступных действий отмены определяется размером буфера отмены.661662```python663>>> for i in range(4):664...     turtle.fd(50); turtle.lt(80)665...666>>> for i in range(8):667...     turtle.undo()668```669670#### `turtle.speed(speed=None)`671672| Параметры: | **speed** – целое число в диапазоне 0..10 или speedstring (см. ниже). |673| --- | --- |674675Устанавливает скорость черепашки в целое значение от 0 до 10. Если аргумент не указан, возвращает текущую скорость.676677Если входное значение – число больше 10 или меньше 0.5, скорость устанавливается в 0. Speedstrings сопоставляются со значениями скорости следующим образом:678679- «самый быстрый»: 0680- «быстрый»: 10681- “обычная”: 6682- “медленная”: 3683- “самая медленная”: 1684685Скорости от 1 до 10 обеспечивают всё более быструю анимацию рисования линий и поворотов черепашки.686687Внимание: *speed* = 0 означает, что *никакой* анимации не происходит. forward/back заставляют черепашку прыгать, а left/right заставляют черепашку мгновенно поворачиваться.688689```python690>>> turtle.speed()6913692>>> turtle.speed('normal')693>>> turtle.speed()6946695>>> turtle.speed(9)696>>> turtle.speed()6979698```699700### 24.1.3.2. Состояние черепашки701702#### `turtle.position()`703704#### `turtle.pos()`705706Возвращает текущее положение черепашки (x, y) (в виде вектора [`Vec2D`](https://python-all.ru/3.4/library/turtle.html#turtle.Vec2D)).707708```python709>>> turtle.pos()710(440.00,-0.00)711```712713#### `turtle.towards(x, y=None)`714715| Параметры: | **x** – число или пара/вектор чисел, или экземпляр черепашки **y** – число, если *x* – число, иначе `None` |716| --- | --- |717718Возвращает угол между линией от позиции черепахи до позиции, заданной с помощью (x, y), вектора или другой черепахи. Это зависит от начальной ориентации черепахи, которая зависит от режима – «standard»/«world» или «logo»).719720```python721>>> turtle.goto(10, 10)722>>> turtle.towards(0,0)723225.0724```725726#### `turtle.xcor()`727728Возвращает x-координату черепашки.729730```python731>>> turtle.home()732>>> turtle.left(50)733>>> turtle.forward(100)734>>> turtle.pos()735(64.28,76.60)736>>> print(round(turtle.xcor(), 5))73764.27876738```739740#### `turtle.ycor()`741742Возвращает y-координату черепашки.743744```python745>>> turtle.home()746>>> turtle.left(60)747>>> turtle.forward(100)748>>> print(turtle.pos())749(50.00,86.60)750>>> print(round(turtle.ycor(), 5))75186.60254752```753754#### `turtle.heading()`755756Возвращает текущий курс черепашки (значение зависит от режима черепашки, см. [`mode()`](https://python-all.ru/3.4/library/turtle.html#turtle.mode)).757758```python759>>> turtle.home()760>>> turtle.left(67)761>>> turtle.heading()76267.0763```764765#### `turtle.distance(x, y=None)`766767| Параметры: | **x** – число или пара/вектор чисел, или экземпляр черепашки **y** – число, если *x* – число, иначе `None` |768| --- | --- |769770Возвращает расстояние от черепашки до точки (x,y), указанного вектора или указанной другой черепашки в единицах шага черепашки.771772```python773>>> turtle.home()774>>> turtle.distance(30,40)77550.0776>>> turtle.distance((30,40))77750.0778>>> joe = Turtle()779>>> joe.forward(77)780>>> turtle.distance(joe)78177.0782```783784### 24.1.3.3. Настройки измерения785786#### `turtle.degrees(fullcircle=360.0)`787788| Параметры: | **fullcircle** – число |789| --- | --- |790791Устанавливает единицы измерения углов, то есть задаёт количество «градусов» в полном обороте. Значение по умолчанию – 360 градусов.792793```python794>>> turtle.home()795>>> turtle.left(90)796>>> turtle.heading()79790.0798799Change angle measurement unit to grad (also known as gon,800grade, or gradian and equals 1/100-th of the right angle.)801>>> turtle.degrees(400.0)802>>> turtle.heading()803100.0804>>> turtle.degrees(360)805>>> turtle.heading()80690.0807```808809#### `turtle.radians()`810811Устанавливает единицы измерения углов в радианы. Эквивалентно `degrees(2*math.pi)`.812813```python814>>> turtle.home()815>>> turtle.left(90)816>>> turtle.heading()81790.0818>>> turtle.radians()819>>> turtle.heading()8201.5707963267948966821```822823### 24.1.3.4. Управление пером824825#### 24.1.3.4.1. Состояние рисования826827#### `turtle.pendown()`828829#### `turtle.pd()`830831#### `turtle.down()`832833Опускает перо – рисование при движении.834835#### `turtle.penup()`836837#### `turtle.pu()`838839#### `turtle.up()`840841Поднимает перо – при движении не рисует.842843#### `turtle.pensize(width=None)`844845#### `turtle.width(width=None)`846847| Параметры: | **width** – положительное число |848| --- | --- |849850Устанавливает толщину линии в *width* или возвращает её. Если для resizemode установлено «auto» и форма черепашки является многоугольником, этот многоугольник рисуется с такой же толщиной линии. Если аргумент не указан, возвращается текущая толщина пера.851852```python853>>> turtle.pensize()8541855>>> turtle.pensize(10)   # отсюда рисуются линии шириной 10856```857858#### `turtle.pen(pen=None, **pendict)`859860| Параметры: | **pen** – словарь, содержащий некоторые или все из перечисленных ниже ключей **pendict** – один или несколько именованных аргументов, использующих перечисленные ниже ключи |861| --- | --- |862863Возвращает или устанавливает атрибуты пера в виде «словаря пера» со следующими парами ключ/значение:864865- “отображается”: True/False866- “перо опущено”: True/False867- “цвет пера”: строка цвета или кортеж цвета868- “цвет заливки”: строка цвета или кортеж цвета869- “размер пера”: положительное число870- “скорость”: число от 0 до 10871- “режим изменения размера”: “auto” or “user” or “noresize”872- “коэффициент растяжения”: (положительное число, положительное число)873- «outline»: положительное число874- «tilt»: число875876Этот словарь можно использовать как аргумент для последующего вызова [`pen()`](https://python-all.ru/3.4/library/turtle.html#turtle.pen) чтобы восстановить предыдущее состояние пера. Кроме того, один или несколько из этих атрибутов можно передать в качестве именованных аргументов. Это позволяет установить несколько атрибутов пера за один вызов.877878```python879>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)880>>> sorted(turtle.pen().items())881[('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),882 ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),883 ('shearfactor', 0.0), ('shown', True), ('speed', 9),884 ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]885>>> penstate=turtle.pen()886>>> turtle.color("yellow", "")887>>> turtle.penup()888>>> sorted(turtle.pen().items())[:3]889[('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]890>>> turtle.pen(penstate, fillcolor="green")891>>> sorted(turtle.pen().items())[:3]892[('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]893```894895#### `turtle.isdown()`896897Возвращает `True`, если перо опущено, и `False`, если поднято.898899```python900>>> turtle.penup()901>>> turtle.isdown()902False903>>> turtle.pendown()904>>> turtle.isdown()905True906```907908#### 24.1.3.4.2. Управление цветом909910#### `turtle.pencolor(*args)`911912Возвращает или задаёт цвет пера.913914Допускаются четыре формата ввода:915916**`pencolor()`**917918Возвращает текущий pencolor в виде строки спецификации цвета или в виде кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.919920**`pencolor(colorstring)`**921922Устанавливает цвет пера в923924*colorstring*925926– строку спецификации цвета Tk, например927928`"red"`929930,931932`"yellow"`933934или935936`"#33cc8c"`937938.939940**`pencolor((r, g, b))`**941942Устанавливает цвет пера в RGB-цвет, заданный кортежем (943944*r*945946,947948*g*949950,951952*b*953954). Значения955956*r*957958,959960*g*961962и963964*b*965966должны быть в диапазоне 0..colormode, где colormode равен либо 1.0, либо 255 (см.967968[`colormode()`](https://python-all.ru/3.4/library/turtle.html#turtle.colormode)969970).971972**`pencolor(r, g, b)`**973974> Задаёт цвет пера по цвету RGB, заданному975>976> *r*977>978> ,979>980> *g*981>982> и983>984> *b*985>986> . Каждое из значений987>988> *r*989>990> ,991>992> *g*993>994> и995>996> *b*997>998> должно быть в диапазоне 0..colormode.9991000Если форма черепахи (turtleshape) является многоугольником, то контур этого многоугольника рисуется вновь заданным цветом пера.10011002```python1003>>> colormode()10041.01005>>> turtle.pencolor()1006'red'1007>>> turtle.pencolor("brown")1008>>> turtle.pencolor()1009'brown'1010>>> tup = (0.2, 0.8, 0.55)1011>>> turtle.pencolor(tup)1012>>> turtle.pencolor()1013(0.2, 0.8, 0.5490196078431373)1014>>> colormode(255)1015>>> turtle.pencolor()1016(51.0, 204.0, 140.0)1017>>> turtle.pencolor('#32c18f')1018>>> turtle.pencolor()1019(50.0, 193.0, 143.0)1020```10211022#### `turtle.fillcolor(*args)`10231024Возвращает или задаёт цвет заливки.10251026Допускаются четыре формата ввода:10271028**`fillcolor()`**10291030Возвращает текущий fillcolor в виде строки спецификации цвета, возможно в формате кортежа (см. пример). Может использоваться как входные данные для другого вызова color/pencolor/fillcolor.10311032**`fillcolor(colorstring)`**10331034Устанавливает цвет заливки в10351036*colorstring*10371038– строку спецификации цвета Tk, например10391040`"red"`10411042,10431044`"yellow"`10451046или10471048`"#33cc8c"`10491050.10511052**`fillcolor((r, g, b))`**10531054Устанавливает цвет заливки в RGB-цвет, заданный кортежем (10551056*r*10571058,10591060*g*10611062,10631064*b*10651066). Значения10671068*r*10691070,10711072*g*10731074и10751076*b*10771078должны быть в диапазоне 0..colormode, где colormode равен либо 1.0, либо 255 (см.10791080[`colormode()`](https://python-all.ru/3.4/library/turtle.html#turtle.colormode)10811082).10831084**`fillcolor(r, g, b)`**10851086> Задаёт цвет заливки по цвету RGB, заданному1087>1088> *r*1089>1090> ,1091>1092> *g*1093>1094> и1095>1096> *b*1097>1098> . Каждое из значений1099>1100> *r*1101>1102> ,1103>1104> *g*1105>1106> и1107>1108> *b*1109>1110> должно быть в диапазоне 0..colormode.11111112Если форма черепахи (turtleshape) является многоугольником, то внутренняя область этого многоугольника закрашивается вновь заданным цветом заливки.11131114```python1115>>> turtle.fillcolor("violet")1116>>> turtle.fillcolor()1117'violet'1118>>> col = turtle.pencolor()1119>>> col1120(50.0, 193.0, 143.0)1121>>> turtle.fillcolor(col)1122>>> turtle.fillcolor()1123(50.0, 193.0, 143.0)1124>>> turtle.fillcolor('#ffffff')1125>>> turtle.fillcolor()1126(255.0, 255.0, 255.0)1127```11281129#### `turtle.color(*args)`11301131Возвращает или задаёт цвет пера и цвет заливки.11321133Допускается несколько форматов ввода. Они используют от 0 до 3 аргументов следующим образом:11341135**`color()`**11361137Возвращает текущий цвет пера и текущий цвет заливки в виде пары строк или кортежей спецификации цвета, как возвращают11381139[`pencolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.pencolor)11401141и11421143[`fillcolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.fillcolor)11441145.11461147**`color(colorstring)`, `color((r,g,b))`, `color(r,g,b)`**11481149Входные данные как в11501151[`pencolor()`](https://python-all.ru/3.4/library/turtle.html#turtle.pencolor)11521153; устанавливает и fillcolor, и pencolor в указанное значение.11541155**`color(colorstring1, colorstring2)`, `color((r1,g1,b1), (r2,g2,b2))`**11561157> Эквивалентно1158>1159> `pencolor(colorstring1)`1160>1161> и1162>1163> `fillcolor(colorstring2)`1164>1165> и аналогично, если используется другой формат ввода.11661167Если форма черепахи – многоугольник, его контур и внутренняя область рисуются новыми установленными цветами.11681169```python1170>>> turtle.color("red", "green")1171>>> turtle.color()1172('red', 'green')1173>>> color("#285078", "#a0c8f0")1174>>> color()1175((40.0, 80.0, 120.0), (160.0, 200.0, 240.0))1176```11771178См. также: метод Screen [`colormode()`](https://python-all.ru/3.4/library/turtle.html#turtle.colormode).11791180#### 24.1.3.4.3. Заливка11811182#### `turtle.filling()`11831184Возвращает состояние заливки (`True`, если заливка включена, иначе `False`).11851186```python1187>>> turtle.begin_fill()1188>>> if turtle.filling():1189...    turtle.pensize(5)1190... else:1191...    turtle.pensize(3)1192```11931194#### `turtle.begin_fill()`11951196Вызывается непосредственно перед рисованием фигуры, которую нужно залить.11971198#### `turtle.end_fill()`11991200Заливает фигуру, нарисованную после последнего вызова [`begin_fill()`](https://python-all.ru/3.4/library/turtle.html#turtle.begin_fill).12011202```python1203>>> turtle.color("black", "red")1204>>> turtle.begin_fill()1205>>> turtle.circle(80)1206>>> turtle.end_fill()1207```12081209#### 24.1.3.4.4. Дополнительное управление рисованием12101211#### `turtle.reset()`12121213Удаляет рисунки черепахи с экрана, перемещает черепаху в центр и сбрасывает переменные в значения по умолчанию.12141215```python1216>>> turtle.goto(0,-22)1217>>> turtle.left(100)1218>>> turtle.position()1219(0.00,-22.00)1220>>> turtle.heading()1221100.01222>>> turtle.reset()1223>>> turtle.position()1224(0.00,0.00)1225>>> turtle.heading()12260.01227```12281229#### `turtle.clear()`12301231Удаляет рисунки черепахи с экрана. Черепаха не перемещается. Состояние и положение черепахи, а также рисунки других черепах не затрагиваются.12321233#### `turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal"))`12341235| Параметры: | **arg** – объект, который будет записан на TurtleScreen. **move** – True/False **align** – одна из строк: «left», «center» или «right». **font** – тройка (имя\_шрифта, размер\_шрифта, тип\_шрифта) |1236| --- | --- |12371238Записывает текст – строковое представление *arg* – на текущей позиции черепахи в соответствии с *align* (“left”, “center” или “right”) и заданным шрифтом. Если *move* равно true, перо перемещается в нижний правый угол текста. По умолчанию *move* равно `False`.12391240```python1241>>> turtle.write("Home = ", True, align="center")1242>>> turtle.write((0,0), True)1243```12441245### 24.1.3.5. Состояние черепахи12461247#### 24.1.3.5.1. Видимость12481249#### `turtle.hideturtle()`12501251#### `turtle.ht()`12521253Делает черепаху невидимой. Рекомендуется делать это во время выполнения сложного рисунка, потому что скрытие черепахи заметно ускоряет рисование.12541255```python1256>>> turtle.hideturtle()1257```12581259#### `turtle.showturtle()`12601261#### `turtle.st()`12621263Делает черепаху видимой.12641265```python1266>>> turtle.showturtle()1267```12681269#### `turtle.isvisible()`12701271Возвращает `True`, если черепаха видна, и `False`, если она скрыта.12721273```python1274>>> turtle.hideturtle()1275>>> turtle.isvisible()1276False1277>>> turtle.showturtle()1278>>> turtle.isvisible()1279True1280```12811282#### 24.1.3.5.2. Внешний вид12831284#### `turtle.shape(name=None)`12851286| Параметры: | **name** – a string which is a valid shapename |1287| --- | --- |12881289Устанавливает форму черепахи по заданному *name*, а если имя не указано, возвращает имя текущей формы. Форма с *name* должна существовать в словаре форм TurtleScreen. Изначально доступны следующие многоугольные формы: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”. Чтобы узнать, как работать с формами, обратитесь к методу Screen [`register_shape()`](https://python-all.ru/3.4/library/turtle.html#turtle.register_shape).12901291```python1292>>> turtle.shape()1293'classic'1294>>> turtle.shape("turtle")1295>>> turtle.shape()1296'turtle'1297```12981299#### `turtle.resizemode(rmode=None)`13001301| Параметры: | **rmode** – one of the strings “auto”, “user”, “noresize” |1302| --- | --- |13031304Устанавливает режим изменения размера в одно из значений: «авто», «пользователь», «без изменения размера». Если *rmode* не указан, возвращает текущий режим изменения размера. Разные режимы изменения размера имеют следующие эффекты:13051306- “auto”: adapts the appearance of the turtle corresponding to the value of pensize.1307- “user”: адаптирует внешний вид черепахи в соответствии со значениями stretchfactor и outlinewidth (outline), которые задаются с помощью [`shapesize()`](https://python-all.ru/3.4/library/turtle.html#turtle.shapesize).1308- «без изменения размера»: адаптация внешнего вида черепахи не производится.13091310resizemode(“user”) вызывается [`shapesize()`](https://python-all.ru/3.4/library/turtle.html#turtle.shapesize) при использовании с аргументами.13111312```python1313>>> turtle.resizemode()1314'noresize'1315>>> turtle.resizemode("auto")1316>>> turtle.resizemode()1317'auto'1318```13191320#### `turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None)`13211322#### `turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None)`13231324| Параметры: | **stretch\_wid** – положительное число **stretch\_len** – положительное число **outline** – положительное число |1325| --- | --- |13261327Возвращает или задаёт атрибуты пера: коэффициенты растяжения по x/y и/или контур. Устанавливает режим изменения размера в “user”. Если и только если режим изменения размера установлен в “user”, черепаха будет отображаться растянутой в соответствии с коэффициентами растяжения: *stretch\_wid* – коэффициент растяжения перпендикулярно её ориентации, *stretch\_len* – коэффициент растяжения в направлении её ориентации, *outline* определяет ширину контура фигуры.13281329```python1330>>> turtle.shapesize()1331(1.0, 1.0, 1)1332>>> turtle.resizemode("user")1333>>> turtle.shapesize(5, 5, 12)1334>>> turtle.shapesize()1335(5, 5, 12)1336>>> turtle.shapesize(outline=8)1337>>> turtle.shapesize()1338(5, 5, 8)1339```13401341#### `turtle.shearfactor(shear=None)`13421343| Параметры: | **shear** – число (необязательно) |1344| --- | --- |13451346Set 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.13471348```python1349>>> turtle.shape("circle")1350>>> turtle.shapesize(5,2)1351>>> turtle.shearfactor(0.5)1352>>> turtle.shearfactor()13530.51354```13551356#### `turtle.tilt(angle)`13571358| Параметры: | **angle** – a number |1359| --- | --- |13601361Повернуть форму черепахи на *angle* от текущего угла наклона, но *не* изменять направление черепахи (направление движения).13621363```python1364>>> turtle.reset()1365>>> turtle.shape("circle")1366>>> turtle.shapesize(5,2)1367>>> turtle.tilt(30)1368>>> turtle.fd(50)1369>>> turtle.tilt(30)1370>>> turtle.fd(50)1371```13721373#### `turtle.settiltangle(angle)`13741375| Параметры: | **angle** – a number |1376| --- | --- |13771378Поворачивает форму черепашки так, чтобы она указывала в направлении, заданном *angle*, независимо от текущего угла наклона. *Не* меняет курс черепашки (направление движения).13791380```python1381>>> turtle.reset()1382>>> turtle.shape("circle")1383>>> turtle.shapesize(5,2)1384>>> turtle.settiltangle(45)1385>>> turtle.fd(50)1386>>> turtle.settiltangle(-45)1387>>> turtle.fd(50)1388```13891390Устарело с версии 3.1.13911392#### `turtle.tiltangle(angle=None)`13931394| Параметры: | **angle** – число (необязательно) |1395| --- | --- |13961397Устанавливает или возвращает текущий угол наклона. Если задан угол, поворачивает форму черепахи, чтобы она указывала в направлении, заданном углом, независимо от текущего угла наклона, но *не* изменять направление черепахи (направление движения). Если угол не задан: возвращает текущий угол наклона, то есть угол между ориентацией формы черепахи и направлением черепахи (её направлением движения).13981399```python1400>>> turtle.reset()1401>>> turtle.shape("circle")1402>>> turtle.shapesize(5,2)1403>>> turtle.tilt(45)1404>>> turtle.tiltangle()140545.01406```14071408#### `turtle.shapetransform(t11=None, t12=None, t21=None, t22=None)`14091410| Параметры: | **t11** – число (необязательно) **t12** – число (необязательно) **t21** – число (необязательно) **t12** – число (необязательно) |1411| --- | --- |14121413Задаёт или возвращает текущую матрицу преобразования формы черепашки.14141415Если ни один из элементов матрицы не задан, возвращает матрицу преобразования в виде кортежа из 4 элементов. В противном случае устанавливает заданные элементы и преобразует форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22. Определитель t11 \* t22 - t12 \* t21 не должен равняться нулю, иначе возникает ошибка. Изменяет коэффициент растяжения, коэффициент сдвига и угол наклона в соответствии с заданной матрицей.14161417```python1418>>> turtle = Turtle()1419>>> turtle.shape("square")1420>>> turtle.shapesize(4,2)1421>>> turtle.shearfactor(-0.5)1422>>> turtle.shapetransform()1423(4.0, -1.0, -0.0, 2.0)1424```14251426#### `turtle.get_shapepoly()`14271428Возвращает текущий многоугольник формы в виде кортежа пар координат. Это можно использовать для определения новой формы или компонентов составной формы.14291430```python1431>>> turtle.shape("square")1432>>> turtle.shapetransform(4, -1, 0, 2)1433>>> turtle.get_shapepoly()1434((50, -20), (30, 20), (-50, 20), (-30, -20))1435```14361437### 24.1.3.6. Использование событий14381439#### `turtle.onclick(fun, btn=1, add=None)`14401441| Параметры: | **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте **num** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши) **add**`True` или `False` – если `True`, новая привязка будет добавлена, иначе она заменит существующую. |1442| --- | --- |14431444Привязывает *fun* к событиям щелчка мыши на этой черепахе. Если *fun* равно `None`, существующие привязки удаляются. Пример для анонимной черепахи, т.е. процедурный способ:14451446```python1447>>> def turn(x, y):1448...     left(180)1449...1450>>> onclick(turn)  # Теперь щелчок по черепашке повернёт её.1451>>> onclick(None)  # привязка события будет удалена1452```14531454#### `turtle.onrelease(fun, btn=1, add=None)`14551456| Параметры: | **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте **num** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши) **add**`True` или `False` – если `True`, новая привязка будет добавлена, иначе она заменит существующую. |1457| --- | --- |14581459Привязывает *fun* к событиям отпускания кнопки мыши на этой черепахе. Если *fun* равно `None`, существующие привязки удаляются.14601461```python1462>>> class MyTurtle(Turtle):1463...     def glow(self,x,y):1464...         self.fillcolor("red")1465...     def unglow(self,x,y):1466...         self.fillcolor("")1467...1468>>> turtle = MyTurtle()1469>>> turtle.onclick(turtle.glow)     # нажатие на черепашку меняет цвет заливки на красный,1470>>> turtle.onrelease(turtle.unglow) # отпускание делает его прозрачным.1471```14721473#### `turtle.ondrag(fun, btn=1, add=None)`14741475| Параметры: | **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте **num** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши) **add**`True` или `False` – если `True`, новая привязка будет добавлена, иначе она заменит существующую. |1476| --- | --- |14771478Привязывает *fun* к событиям движения мыши на этой черепахе. Если *fun* равно `None`, существующие привязки удаляются.14791480Примечание: Каждая последовательность событий перемещения мыши на черепашке предваряется событием щелчка мыши на этой черепашке.14811482```python1483>>> turtle.ondrag(turtle.goto)1484```14851486После этого щелчок и перетаскивание черепашки будет перемещать её по экрану, создавая рисунки от руки (если перо опущено).14871488### 24.1.3.7. Специальные методы Turtle14891490#### `turtle.begin_poly()`14911492Начинает запись вершин многоугольника. Текущая позиция черепашки является первой вершиной многоугольника.14931494#### `turtle.end_poly()`14951496Остановить запись вершин многоугольника. Текущая позиция черепашки – последняя вершина многоугольника. Она будет соединена с первой вершиной.14971498#### `turtle.get_poly()`14991500Возвращает последний записанный многоугольник.15011502```python1503>>> turtle.home()1504>>> turtle.begin_poly()1505>>> turtle.fd(100)1506>>> turtle.left(20)1507>>> turtle.fd(30)1508>>> turtle.left(60)1509>>> turtle.fd(50)1510>>> turtle.end_poly()1511>>> p = turtle.get_poly()1512>>> register_shape("myFavouriteShape", p)1513```15141515#### `turtle.clone()`15161517Создаёт и возвращает клон черепашки с теми же координатами, направлением и свойствами черепашки.15181519```python1520>>> mick = Turtle()1521>>> joe = mick.clone()1522```15231524#### `turtle.getturtle()`15251526#### `turtle.getpen()`15271528Возвращает сам объект Turtle. Единственное разумное применение – как функция для возврата «анонимной черепашки»:15291530```python1531>>> pet = getturtle()1532>>> pet.fd(50)1533>>> pet1534<turtle.Turtle object at 0x...>1535```15361537#### `turtle.getscreen()`15381539Возвращает объект [`TurtleScreen`](https://python-all.ru/3.4/library/turtle.html#turtle.TurtleScreen), на котором черепаха рисует. Методы TurtleScreen затем можно вызывать для этого объекта.15401541```python1542>>> ts = turtle.getscreen()1543>>> ts1544<turtle._Screen object at 0x...>1545>>> ts.bgcolor("pink")1546```15471548#### `turtle.setundobuffer(size)`15491550| Параметры: | **size** – целое число или `None` |1551| --- | --- |15521553Устанавливает или отключает буфер отмены. Если *size* – целое число, устанавливается пустой буфер отмены заданного размера. *size* задаёт максимальное количество действий черепахи, которые можно отменить с помощью метода/функции [`undo()`](https://python-all.ru/3.4/library/turtle.html#turtle.undo). Если *size* равен `None`, буфер отмены отключается.15541555```python1556>>> turtle.setundobuffer(42)1557```15581559#### `turtle.undobufferentries()`15601561Возвращает количество записей в буфере отмены.15621563```python1564>>> while undobufferentries():1565...     undo()1566```15671568### 24.1.3.8. Составные фигуры15691570Чтобы использовать составные фигуры черепахи, состоящие из нескольких многоугольников разного цвета, необходимо явно использовать вспомогательный класс [`Shape`](https://python-all.ru/3.4/library/turtle.html#turtle.Shape), как описано ниже:157115721. Создаёт пустой объект Shape типа «compound».15732. Добавьте в этот объект столько компонентов, сколько нужно, с помощью метода `addcomponent()`.15741575   Например:15761577   ```python1578   >>> s = Shape("compound")1579   >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5))1580   >>> s.addcomponent(poly1, "red", "blue")1581   >>> poly2 = ((0,0),(10,-5),(-10,-5))1582   >>> s.addcomponent(poly2, "blue", "red")1583   ```15843. Теперь добавьте Shape в список фигур экрана и используйте его:15851586   ```python1587   >>> register_shape("myshape", s)1588   >>> shape("myshape")1589   ```15901591> **Примечание**1592>1593> Класс [`Shape`](https://python-all.ru/3.4/library/turtle.html#turtle.Shape) используется внутри метода [`register_shape()`](https://python-all.ru/3.4/library/turtle.html#turtle.register_shape) разными способами. Разработчику приложения приходится иметь дело с классом Shape *только* при использовании составных фигур, как показано выше!15941595## 24.1.4. Методы TurtleScreen/Screen и соответствующие функции15961597Большинство примеров в этом разделе ссылаются на экземпляр TurtleScreen с именем `screen`.15981599### 24.1.4.1. Управление окном16001601#### `turtle.bgcolor(*args)`16021603| Параметры: | **args** – строка цвета, три числа в диапазоне от 0 до colormode или кортеж из трёх таких чисел. |1604| --- | --- |16051606Устанавливает или возвращает цвет фона экрана TurtleScreen.16071608```python1609>>> screen.bgcolor("orange")1610>>> screen.bgcolor()1611'orange'1612>>> screen.bgcolor("#800080")1613>>> screen.bgcolor()1614(128.0, 0.0, 128.0)1615```16161617#### `turtle.bgpic(picname=None)`16181619| Параметры: | **picname** – строка, имя gif-файла, `"nopic"` или `None` |1620| --- | --- |16211622Устанавливает фоновое изображение или возвращает имя текущего фонового изображения. Если *picname* – имя файла, устанавливает соответствующее изображение в качестве фона. Если *picname*`"nopic"`, удаляет фоновое изображение, если оно есть. Если *picname*`None`, возвращает имя файла текущего фонового изображения.16231624```python1625>>> screen.bgpic()1626'nopic'1627>>> screen.bgpic("landscape.gif")1628>>> screen.bgpic()1629"landscape.gif"1630```16311632#### `turtle.clear()`16331634#### `turtle.clearscreen()`16351636Удаляет все рисунки и всех черепах с TurtleScreen. Сбрасывает теперь пустой TurtleScreen в исходное состояние: белый фон, без фонового изображения, без привязок событий и с включённой трассировкой.16371638> **Примечание**1639>1640> Этот метод TurtleScreen доступен как глобальная функция только под именем `clearscreen`. Глобальная функция `clear` – другая, полученная из метода Turtle `clear`.16411642#### `turtle.reset()`16431644#### `turtle.resetscreen()`16451646Сбрасывает всех черепах на экране в исходное состояние.16471648> **Примечание**1649>1650> Этот метод TurtleScreen доступен как глобальная функция только под именем `resetscreen`. Глобальная функция `reset` – другая, полученная из метода Turtle `reset`.16511652#### `turtle.screensize(canvwidth=None, canvheight=None, bg=None)`16531654| Параметры: | **canvwidth** – положительное целое, новая ширина холста в пикселях **canvheight** – положительное целое, новая высота холста в пикселях **bg** – строка цвета или кортеж цвета, новый цвет фона |1655| --- | --- |16561657Если аргументы не переданы, возвращает текущие (canvaswidth, canvasheight). В противном случае изменяет размер холста, на котором рисуют черепахи. Не изменяет окно рисования. Для просмотра скрытых частей холста используйте полосы прокрутки. С помощью этого метода можно сделать видимыми те части рисунка, которые раньше находились за пределами холста.16581659```python1660>>> screen.screensize()1661(400, 300)1662>>> screen.screensize(2000,1500)1663>>> screen.screensize()1664(2000, 1500)1665```16661667например, для поиска случайно сбежавшей черепахи ;-)16681669#### `turtle.setworldcoordinates(llx, lly, urx, ury)`16701671| Параметры: | **llx** – число, x-координата левого нижнего угла холста **lly** – число, y-координата левого нижнего угла холста **urx** – число, x-координата правого верхнего угла холста **ury** – число, y-координата правого верхнего угла холста |1672| --- | --- |16731674Настраивает пользовательскую систему координат и переключается в режим «world» при необходимости. Это выполняет `screen.reset()`. Если режим «world» уже активен, все рисунки перерисовываются в соответствии с новыми координатами.16751676**ВНИМАНИЕ**: в пользовательских системах координат углы могут отображаться искажёнными.16771678```python1679>>> screen.reset()1680>>> screen.setworldcoordinates(-50,-7.5,50,7.5)1681>>> for _ in range(72):1682...     left(10)1683...1684>>> for _ in range(8):1685...     left(45); fd(2)   # правильный восьмиугольник1686```16871688### 24.1.4.2. Управление анимацией16891690#### `turtle.delay(delay=None)`16911692| Параметры: | **delay** – положительное целое |1693| --- | --- |16941695Устанавливает или возвращает задержку *delay* рисования в миллисекундах. (Это приблизительно интервал времени между двумя последовательными обновлениями холста.) Чем больше задержка рисования, тем медленнее анимация.16961697Необязательный аргумент:16981699```python1700>>> screen.delay()1701101702>>> screen.delay(5)1703>>> screen.delay()170451705```17061707#### `turtle.tracer(n=None, delay=None)`17081709| Параметры: | **n** – неотрицательное целое число **delay** – неотрицательное целое число |1710| --- | --- |17111712Включает/выключает анимацию черепахи и устанавливает задержку для обновления рисунков. Если задан *n*, реально выполняется только каждое n-е обычное обновление экрана. (Можно использовать для ускорения рисования сложной графики.) При вызове без аргументов возвращает текущее сохранённое значение n. Второй аргумент устанавливает значение задержки (см. [`delay()`](https://python-all.ru/3.4/library/turtle.html#turtle.delay)).17131714```python1715>>> screen.tracer(8, 25)1716>>> dist = 21717>>> for i in range(200):1718...     fd(dist)1719...     rt(90)1720...     dist += 21721```17221723#### `turtle.update()`17241725Выполняет обновление TurtleScreen. Используется, когда tracer выключен.17261727См. также метод RawTurtle/Turtle [`speed()`](https://python-all.ru/3.4/library/turtle.html#turtle.speed).17281729### 24.1.4.3. Использование событий экрана17301731#### `turtle.listen(xdummy=None, ydummy=None)`17321733Устанавливает фокус на TurtleScreen (для сбора событий клавиш). Фиктивные аргументы предусмотрены, чтобы можно было передавать [`listen()`](https://python-all.ru/3.4/library/turtle.html#turtle.listen) методу onclick.17341735#### `turtle.onkey(fun, key)`17361737#### `turtle.onkeyrelease(fun, key)`17381739| Параметры: | **fun** – функция без аргументов или `None` **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”) |1740| --- | --- |17411742Привязывает *fun* к событию отпускания клавиши. Если *fun* равно `None`, привязки событий удаляются. Замечание: чтобы иметь возможность регистрировать события клавиш, TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.4/library/turtle.html#turtle.listen).)17431744```python1745>>> def f():1746...     fd(50)1747...     lt(60)1748...1749>>> screen.onkey(f, "Up")1750>>> screen.listen()1751```17521753#### `turtle.onkeypress(fun, key=None)`17541755| Параметры: | **fun** – функция без аргументов или `None` **key** – строка: клавиша (например, “a”) или символ клавиши (например, “space”) |1756| --- | --- |17571758Привязывает *fun* к событию нажатия клавиши, если клавиша указана, или к любому событию нажатия клавиши, если клавиша не указана. Замечание: чтобы иметь возможность регистрировать события клавиш, TurtleScreen должен иметь фокус. (См. метод [`listen()`](https://python-all.ru/3.4/library/turtle.html#turtle.listen).)17591760```python1761>>> def f():1762...     fd(50)1763...1764>>> screen.onkey(f, "Up")1765>>> screen.listen()1766```17671768#### `turtle.onclick(fun, btn=1, add=None)`17691770#### `turtle.onscreenclick(fun, btn=1, add=None)`17711772| Параметры: | **fun** – функция с двумя аргументами, которая будет вызвана с координатами точки щелчка на холсте **num** – номер кнопки мыши, по умолчанию 1 (левая кнопка мыши) **add**`True` или `False` – если `True`, будет добавлена новая привязка, в противном случае она заменит предыдущую привязку |1773| --- | --- |17741775Привязывает *fun* к событиям щелчка мыши на этом экране. Если *fun* равно `None`, существующие привязки удаляются.17761777Пример для экземпляра TurtleScreen с именем `screen` и экземпляра Turtle с именем turtle:17781779```python1780>>> screen.onclick(turtle.goto) # Последующий щелчок по TurtleScreen заставит1781>>>                             # черепашку переместиться в точку щелчка.1782>>> screen.onclick(None)        # снова удалить привязку события1783```17841785> **Примечание**1786>1787> Этот метод TurtleScreen доступен как глобальная функция только под именем `onscreenclick`. Глобальная функция `onclick` – это другая функция, производная от метода Turtle `onclick`.17881789#### `turtle.ontimer(fun, t=0)`17901791| Параметры: | **fun** – функция без аргументов **t** – число \>= 0 |1792| --- | --- |17931794Устанавливает таймер, который вызывает *fun* через *t* миллисекунд.17951796```python1797>>> running = True1798>>> def f():1799...     if running:1800...         fd(50)1801...         lt(60)1802...         screen.ontimer(f, 250)1803>>> f()   ### заставляет черепашку обходить вокруг1804>>> running = False1805```18061807#### `turtle.mainloop()`18081809#### `turtle.done()`18101811Запускает цикл событий – вызывает функцию mainloop из Tkinter. Должна быть последней инструкцией в программе с черепашьей графикой. Должна *не* использоваться, если скрипт запускается из IDLE в режиме -n (без подпроцесса) – для интерактивного использования черепашьей графики.18121813```python1814>>> screen.mainloop()1815```18161817### 24.1.4.4. Методы ввода18181819#### `turtle.textinput(title, prompt)`18201821| Параметры: | **title** – строка **prompt** – строка |1822| --- | --- |18231824Отображает диалоговое окно для ввода строки. Параметр title (заголовок) задаёт заголовок диалогового окна, параметр prompt (подсказка) – текст, в основном описывающий, какую информацию следует ввести. Возвращает введённую строку. Если диалог отменён, возвращает None.18251826```python1827>>> screen.textinput("NIM", "Name of first player:")1828```18291830#### `turtle.numinput(title, prompt, default=None, minval=None, maxval=None)`18311832| Параметры: | **title** – строка **prompt** – строка **default** – число (необязательно) **minval** – число (необязательно) **maxval** – число (необязательно) |1833| --- | --- |18341835Отображает диалоговое окно для ввода числа. title – это заголовок диалогового окна, prompt – это текст, в основном описывающий, какую числовую информацию ввести. default: значение по умолчанию, minval: минимальное значение для ввода, maxval: максимальное значение для ввода. Введённое число должно находиться в диапазоне minval .. maxval, если эти параметры заданы. Если нет, выводится подсказка, и диалог остаётся открытым для исправления. Возвращает введённое число. Если диалог отменён, возвращает None.18361837```python1838>>> screen.numinput("Poker", "Your stakes:", 1000, minval=10, maxval=10000)1839```18401841### 24.1.4.5. Настройки и специальные методы18421843#### `turtle.mode(mode=None)`18441845| Параметры: | **mode** – одна из строк “standard”, “logo” или “world” |1846| --- | --- |18471848Устанавливает режим черепахи (“standard”, “logo” или “world”) и выполняет сброс. Если режим не задан, возвращается текущий режим.18491850Режим «standard» совместим со старой [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle). Режим «logo» совместим с большинством графики Logo turtle. Режим «world» использует заданные пользователем «мировые координаты». **Внимание**: в этом режиме углы выглядят искажёнными, если `x/y` отношение единиц не равно 1.18511852| Режим | Начальное направление черепахи | положительные углы |1853| --- | --- | --- |1854| “standard” | вправо (восток) | против часовой стрелки |1855| “logo” | вверх (север) | по часовой стрелке |18561857```python1858>>> mode("logo")   # сбрасывает направление черепашки на север1859>>> mode()1860'logo'1861```18621863#### `turtle.colormode(cmode=None)`18641865| Параметры: | **cmode** – одно из значений 1.0 или 255 |1866| --- | --- |18671868Возвращает цветовой режим или устанавливает его в значение 1.0 или 255. Впоследствии значения *r*, *g*, *b* цветовых троек должны находиться в диапазоне от 0 до *cmode*.18691870```python1871>>> screen.colormode(1)1872>>> turtle.pencolor(240, 160, 80)1873Traceback (most recent call last):1874     ...1875TurtleGraphicsError: bad color sequence: (240, 160, 80)1876>>> screen.colormode()18771.01878>>> screen.colormode(255)1879>>> screen.colormode()18802551881>>> turtle.pencolor(240,160,80)1882```18831884#### `turtle.getcanvas()`18851886Возвращает Canvas данного TurtleScreen. Полезно для тех, кто знает, что делать с Canvas из Tkinter.18871888```python1889>>> cv = screen.getcanvas()1890>>> cv1891<turtle.ScrolledCanvas object at ...>1892```18931894#### `turtle.getshapes()`18951896Возвращает список названий всех доступных в данный момент форм черепашки.18971898```python1899>>> screen.getshapes()1900['arrow', 'blank', 'circle', ..., 'turtle']1901```19021903#### `turtle.register_shape(name, shape=None)`19041905#### `turtle.addshape(name, shape=None)`19061907Эту функцию можно вызвать тремя различными способами:190819091. *name* – имя gif-файла, а *shape*`None`: установить соответствующую фигуру изображения.19101911   ```python1912   >>> screen.register_shape("turtle.gif")1913   ```19141915   > **Примечание**1916   >1917   > Формы изображений *не* поворачиваются при повороте черепашки, поэтому они не отображают направление черепашки!19182. *name* – произвольная строка, а *shape* – кортеж пар координат: устанавливает соответствующую многоугольную форму.19191920   ```python1921   >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3)))1922   ```19233. *name* – произвольная строка, а shape – объект (составной) [`Shape`](https://python-all.ru/3.4/library/turtle.html#turtle.Shape): установить соответствующую составную фигуру.19241925Добавляет фигуру черепашки в список фигур TurtleScreen. Только так зарегистрированные фигуры можно использовать командой `shape(shapename)`.19261927#### `turtle.turtles()`19281929Возвращает список черепашек на экране.19301931```python1932>>> for turtle in screen.turtles():1933...     turtle.color("red")1934```19351936#### `turtle.window_height()`19371938Возвращает высоту окна черепашки.19391940```python1941>>> screen.window_height()19424801943```19441945#### `turtle.window_width()`19461947Возвращает ширину окна черепашки.19481949```python1950>>> screen.window_width()19516401952```19531954### 24.1.4.6. Методы, специфичные для Screen, не унаследованные от TurtleScreen19551956#### `turtle.bye()`19571958Закрывает окно графики черепашки.19591960#### `turtle.exitonclick()`19611962Привязать метод bye() к щелчкам мыши на экране.19631964Если значение “using\_IDLE” в словаре конфигурации равно `False` (значение по умолчанию), также запускается mainloop. Замечание: если используется IDLE с ключом `-n` (без подпроцесса), это значение должно быть установлено в `True` в `turtle.cfg`. В этом случае собственный mainloop IDLE также активен для клиентского скрипта.19651966#### `turtle.setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])`19671968Устанавливает размер и положение главного окна. Значения аргументов по умолчанию хранятся в словаре конфигурации и могут быть изменены через файл `turtle.cfg`.19691970| Параметры: | **width** – если целое число, размер в пикселях; если число с плавающей запятой, доля экрана; по умолчанию – 50% экрана. **height** – если целое число, высота в пикселях; если число с плавающей запятой, доля от экрана; по умолчанию 75% экрана **startx** – если положительное, начальная позиция в пикселях от левого края экрана; если отрицательное – от правого края; если None – центрировать окно по горизонтали. **starty** – если положительное, начальная позиция в пикселях от верхнего края экрана; если отрицательное – от нижнего края; если None – центрировать окно по вертикали. |1971| --- | --- |19721973```python1974>>> screen.setup (width=200, height=200, startx=0, starty=0)1975>>>              # устанавливает окно размером 200x200 пикселей в верхнем левом углу экрана1976>>> screen.setup(width=.75, height=0.5, startx=None, starty=None)1977>>>              # устанавливает окно 75% на 50% экрана и центрирует его1978```19791980#### `turtle.title(titlestring)`19811982| Параметры: | **titlestring** – строка, отображаемая в заголовке окна черепашьей графики |1983| --- | --- |19841985Устанавливает заголовок окна черепашки равным *titlestring*.19861987```python1988>>> screen.title("Welcome to the turtle zoo!")1989```19901991## 24.1.5. Публичные классы19921993#### `class turtle.RawTurtle(canvas)`19941995#### `class turtle.RawPen(canvas)`19961997| Параметры: | **canvas** – объект `tkinter.Canvas`, [`ScrolledCanvas`](https://python-all.ru/3.4/library/turtle.html#turtle.ScrolledCanvas) или [`TurtleScreen`](https://python-all.ru/3.4/library/turtle.html#turtle.TurtleScreen). |1998| --- | --- |19992000Создаёт черепашку. Объект черепашки обладает всеми методами, описанными выше как «методы Turtle/RawTurtle».20012002#### `class turtle.Turtle`20032004Подкласс RawTurtle, имеет тот же интерфейс, но рисует на объекте [`Screen`](https://python-all.ru/3.4/library/turtle.html#turtle.Screen) по умолчанию, который создаётся автоматически при первом обращении.20052006#### `class turtle.TurtleScreen(cv)`20072008| Параметры: | **cv** – объект `tkinter.Canvas`. |2009| --- | --- |20102011Предоставляет ориентированные на экран методы, такие как `setbg()` и другие, которые описаны выше.20122013#### `class turtle.Screen`20142015Подкласс TurtleScreen, [*дополненный четырьмя методами*](https://python-all.ru/3.4/library/turtle.html#screenspecific).20162017#### `class turtle.ScrolledCanvas(master)`20182019| Параметры: | **master** – виджет Tkinter, в который помещается ScrolledCanvas; например, Tkinter-холст с добавленными полосами прокрутки |2020| --- | --- |20212022Используется классом Screen, который, таким образом, автоматически предоставляет ScrolledCanvas в качестве поля для черепашек.20232024#### `class turtle.Shape(type_, data)`20252026| Параметры: | **type\_** – одна из строк: «polygon», «image», «compound» |2027| --- | --- |20282029Структура данных для моделирования фигур. Пара `(type_, data)` должна соответствовать следующей спецификации:20302031| *type\_* | *данные* |2032| --- | --- |2033| «polygon» | кортеж многоугольника, т.е. кортеж пар координат |2034| «image» | изображение (в таком виде используется только внутри!) |2035| «compound» | `None` (составная фигура должна быть создана с помощью метода [`addcomponent()`](https://python-all.ru/3.4/library/turtle.html#turtle.Shape.addcomponent)) |20362037#### `addcomponent(poly, fill, outline=None)`20382039| Параметры: | **poly** – многоугольник, т.е. кортеж пар чисел **fill** – цвет, которым будет заполнен *poly* **outline** – цвет контура многоугольника (если задан) |2040| --- | --- |20412042Пример:20432044```python2045>>> poly = ((0,0),(10,-5),(0,10),(-10,-5))2046>>> s = Shape("compound")2047>>> s.addcomponent(poly, "red", "blue")2048>>> # ... добавьте больше компонентов, а затем используйте register_shape()2049```20502051См. [*Составные фигуры*](https://python-all.ru/3.4/library/turtle.html#compoundshapes).20522053#### `class turtle.Vec2D(x, y)`20542055Двумерный векторный класс, используемый как вспомогательный класс для реализации graphics черепашки. Может быть полезен и для программ с графикой черепашки. Производный от tuple, так что вектор – это кортеж!20562057Предоставляет (для векторов *a*, *b* и числа *k*):20582059- `a + b` сложение векторов2060- `a - b` вычитание векторов2061- `a * b` внутреннее произведение2062- `k * a` и `a * k` умножение на скаляр2063- `abs(a)` абсолютное значение a2064- `a.rotate(angle)` поворот20652066## 24.1.6. Справка и конфигурация20672068### 24.1.6.1. Как пользоваться справкой20692070Публичные методы классов Screen и Turtle подробно документированы через docstrings. Их можно использовать как онлайн-справку через средства помощи Python:20712072- При использовании IDLE всплывающие подсказки показывают сигнатуры и первые строки docstrings для введённых вызовов функций/методов.2073- Вызов [`help()`](https://python-all.ru/3.4/library/functions.html#help) у методов или функций показывает docstrings:20742075  ```python2076  >>> help(Screen.bgcolor)2077  Help on method bgcolor in module turtle:20782079  bgcolor(self, *args) unbound turtle.Screen method2080      Set or return backgroundcolor of the TurtleScreen.20812082      Arguments (if given): a color string or three numbers2083      in the range 0..colormode or a 3-tuple of such numbers.20842085        >>> screen.bgcolor("orange")2086        >>> screen.bgcolor()2087        "orange"2088        >>> screen.bgcolor(0.5,0,0.5)2089        >>> screen.bgcolor()2090        "#800080"20912092  >>> help(Turtle.penup)2093  Help on method penup in module turtle:20942095  penup(self) unbound turtle.Turtle method2096      Pull the pen up -- no drawing when moving.20972098      Aliases: penup | pu | up20992100      No argument21012102      >>> turtle.penup()2103  ```2104- Docstrings функций, производных от методов, имеют изменённую форму:21052106  ```python2107  >>> help(bgcolor)2108  Help on function bgcolor in module turtle:21092110  bgcolor(*args)2111      Set or return backgroundcolor of the TurtleScreen.21122113      Arguments (if given): a color string or three numbers2114      in the range 0..colormode or a 3-tuple of such numbers.21152116      Example::21172118        >>> bgcolor("orange")2119        >>> bgcolor()2120        "orange"2121        >>> bgcolor(0.5,0,0.5)2122        >>> bgcolor()2123        "#800080"21242125  >>> help(penup)2126  Help on function penup in module turtle:21272128  penup()2129      Pull the pen up -- no drawing when moving.21302131      Aliases: penup | pu | up21322133      No argument21342135      Example:2136      >>> penup()2137  ```21382139Эти изменённые docstrings создаются автоматически вместе с определениями функций, которые производятся от методов во время импорта.21402141### 24.1.6.2. Перевод строк документации на разные языки21422143Существует утилита для создания словаря, ключами которого являются имена методов, а значениями – docstrings публичных методов классов Screen и Turtle.21442145#### `turtle.write_docstringdict(filename="turtle_docstringdict")`21462147| Параметры: | **filename** – строка, используемая как имя файла |2148| --- | --- |21492150Создаёт и записывает словарь docstring-ов в Python-скрипт с указанным именем файла. Эта функция должна вызываться явно (она не используется классами графики turtle). Словарь docstring-ов будет записан в Python-скрипт `filename.py`. Он предназначен служить шаблоном для перевода docstring-ов на разные языки.21512152Если вы (или ваши ученики) хотите использовать [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle) со справочной системой на родном языке, необходимо перевести docstrings и сохранить полученный файл, например, как `turtle_docstringdict_german.py`.21532154Если в файле `turtle.cfg` есть соответствующая запись, этот словарь будет считан при импорте и заменит исходные английские docstrings.21552156На момент написания этого текста есть словари строк документации на немецком и итальянском. (Запросы направляйте на [glingl@aon.at](https://python-all.ru/3.4/library/turtle.html).)21572158### 24.1.6.3. Как настроить Screen и Turtles21592160Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle, чтобы сохранить максимально возможную совместимость с ним.21612162Если вы хотите использовать другую конфигурацию, которая лучше отражает возможности этого модуля или больше подходит для ваших нужд, например, для использования в классе, вы можете подготовить файл конфигурации `turtle.cfg`, который будет считан во время импорта и изменит конфигурацию в соответствии с настройками.21632164Встроенная конфигурация соответствует следующему turtle.cfg:21652166```python2167width = 0.52168height = 0.752169leftright = None2170topbottom = None2171canvwidth = 4002172canvheight = 3002173mode = standard2174colormode = 1.02175delay = 102176undobuffersize = 10002177shape = classic2178pencolor = black2179fillcolor = black2180resizemode = noresize2181visible = True2182language = english2183exampleturtle = turtle2184examplescreen = screen2185title = Python Turtle Graphics2186using_IDLE = False2187```21882189Краткое пояснение выбранных записей:21902191- Первые четыре строки соответствуют аргументам метода `Screen.setup()`.2192- Строки 5 и 6 соответствуют аргументам метода `Screen.screensize()`.2193- *shape* может быть любой из встроенных форм, например: arrow, turtle и т.д. Для получения дополнительной информации попробуйте `help(shape)`.2194- Если вы хотите не использовать цвет заливки (т.е. сделать черепаху прозрачной), нужно написать `fillcolor = ""` (но все непустые строки не должны содержать кавычек в cfg-файле).2195- Если вы хотите отражать состояние черепахи, нужно использовать `resizemode = auto`.2196- Если установить, например, `language = italian`, то словарь docstringdict `turtle_docstringdict_italian.py` будет загружен при импорте (если присутствует в пути импорта, например, в той же директории, что и [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle)).2197- Записи *exampleturtle* и *examplescreen* задают имена этих объектов, как они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.2198- *using\_IDLE*: установите это в `True`, если вы регулярно работаете с IDLE и его ключом -n (“без подпроцесса”). Это предотвратит вход [`exitonclick()`](https://python-all.ru/3.4/library/turtle.html#turtle.exitonclick) в главный цикл.21992200Файл `turtle.cfg` может находиться в каталоге, где хранится [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle), и дополнительный файл – в текущем рабочем каталоге. Последний будет переопределять настройки первого.22012202Каталог `Lib/turtledemo` содержит файл `turtle.cfg`. Вы можете изучить его как пример и увидеть его эффекты при запуске демонстраций (желательно не из окна просмотра демо).22032204## 24.1.7. [`turtledemo`](https://python-all.ru/3.4/library/turtle.html#module-turtledemo) – Демонстрационные скрипты22052206Пакет [`turtledemo`](https://python-all.ru/3.4/library/turtle.html#module-turtledemo) содержит набор демонстрационных скриптов. Эти скрипты можно запускать и просматривать с помощью прилагаемого средства просмотра демонстраций следующим образом:22072208```python2209python -m turtledemo2210```22112212В качестве альтернативы вы можете запускать демонстрационные скрипты по отдельности. Например,22132214```python2215python -m turtledemo.bytedesign2216```22172218Каталог пакета [`turtledemo`](https://python-all.ru/3.4/library/turtle.html#module-turtledemo) содержит:22192220- Средство просмотра демонстраций `__main__.py`, которое можно использовать для одновременного просмотра исходного кода скриптов и их запуска.2221- Несколько скриптов, демонстрирующих различные возможности модуля [`turtle`](https://python-all.ru/3.4/library/turtle.html#module-turtle). Примеры доступны через меню Examples. Их также можно запускать отдельно.2222- Файл `turtle.cfg`, который служит примером того, как писать и использовать такие файлы.22232224Демонстрационные скрипты:22252226| Имя | Описание | Возможности |2227| --- | --- | --- |2228| bytedesign | сложный классический узор черепашьей графики | `tracer()`, delay, `update()` |2229| chaos | строит график динамики Ферхюльста, показывает, что компьютерные вычисления иногда могут давать результаты, противоречащие здравому смыслу | мировые координаты |2230| clock | аналоговые часы, показывающие время вашего компьютера | черепахи как стрелки часов, ontimer |2231| colormixer | эксперимент с r, g, b | `ondrag()` |2232| forest | 3 дерева обхода в ширину | рандомизация |2233| fractalcurves | Кривые Гильберта и Коха | рекурсия |2234| lindenmayer | этноматематика (индийские коламы) | L-система |2235| minimal\_hanoi | Ханойские башни | Прямоугольные черепахи как диски Ханоя (shape, shapesize) |2236| nim | игра в классический ним с тремя кучками палочек против компьютера. | черепашки как палочки нима, событийно-ориентированное управление (мышь, клавиатура) |2237| paint | супер-минималистичная программа для рисования | `onclick()` |2238| peace | элементарный | черепашка: внешний вид и анимация |2239| penrose | непериодическое замощение воздушными змеями и дротиками | `stamp()` |2240| planet\_and\_moon | симуляция гравитационной системы | составные фигуры, `Vec2D` |2241| round\_dance | танцующие черепашки, вращающиеся попарно в противоположных направлениях | составные фигуры, clone shapesize, tilt, get\_shapepoly, update |2242| дерево | (графическое) дерево обхода в ширину (с использованием генераторов) | `clone()` |2243| two\_canvases | простой дизайн | черепашки на двух холстах |2244| wikipedia | узор из статьи в Википедии о черепашьей графике | `clone()`, `undo()` |2245| yingyang | ещё один элементарный пример | `circle()` |22462247Удачи!22482249## 24.1.8. Изменения начиная с Python 2.622502251- Методы `Turtle.tracer()`, `Turtle.window_width()` и `Turtle.window_height()` были удалены. Методы с такими именами и функциональностью теперь доступны только как методы `Screen`. Производные от них функции остаются доступными. (На самом деле уже в Python 2.6 эти методы были всего лишь дубликатами соответствующих методов `TurtleScreen`/`Screen`.)2252- Метод `Turtle.fill()` был удален. Поведение `begin_fill()` и `end_fill()` немного изменилось: теперь каждый процесс заливки должен завершаться вызовом `end_fill()`.2253- Добавлен метод `Turtle.filling()`. Он возвращает логическое значение: `True`, если процесс заливки выполняется, `False` в противном случае. Это поведение соответствует вызову `fill()` без аргументов в Python 2.6.22542255## 24.1.9. Изменения после Python 3.022562257- Добавлены методы `Turtle.shearfactor()`, `Turtle.shapetransform()` и `Turtle.get_shapepoly()`. Таким образом, теперь доступен полный набор обычных линейных преобразований для трансформации форм черепашки. Функциональность `Turtle.tiltangle()` расширена: теперь его можно использовать для получения или установки угла наклона. `Turtle.settiltangle()` устарел.2258- Метод `Screen.onkeypress()` добавлен как дополнение к `Screen.onkey()`, который на самом деле привязывает действия к событию отпускания клавиши. Соответственно последний получил псевдоним: `Screen.onkeyrelease()`.2259- Добавлен метод `Screen.mainloop()`. Таким образом, при работе только с объектами Screen и Turtle больше не нужно дополнительно импортировать `mainloop()`.2260- Добавлены два метода ввода: `Screen.textinput()` и `Screen.numinput()`. Они открывают диалоговые окна ввода и возвращают строки и числа соответственно.2261- Два примера скриптов `tdemo_nim.py` и `tdemo_round_dance.py` добавлены в каталог `Lib/turtledemo`.2262