Библиотека Turtle: первые шаги в графике Python
Основные возможности модуля turtle
Как начать рисовать с помощью turtle?
Для работы с черепашьей графикой требуется импортировать модуль turtle. Наиболее распространённый способ:
import turtle
t = turtle.Turtle()Turtle python goto (команда goto в модуле turtle python)
После создания экземпляра Turtle доступны команды перемещения. Например, для рисования линии вперёд на 100 пикселей используется t.forward(100), для поворота на 90 градусов влево - t.left(90). Чтобы окно не закрывалось сразу, добавляют вызов turtle.done() или turtle.exitonclick().
Типичная ошибка: окно появляется и мгновенно исчезает. Решение - вставить turtle.exitonclick() в конец программы.
Как импортировать turtle без префикса?
Можно использовать from turtle import * - тогда команды доступны напрямую: forward(100), left(90). Однако такой способ загрязняет пространство имён и не рекомендуется для больших проектов.
Как изменить внешний вид черепахи?
Метод t.shape('turtle') меняет форму указателя на черепашку. Доступны также 'arrow', 'circle', 'square', 'triangle', 'classic'.
Как управлять скоростью рисования?
Скорость задаётся методом t.speed(0) (0 - максимальная, 1..10 - увеличение). По умолчанию скорость 6.
Как нарисовать квадрат?
Простой цикл из четырёх повторений:
for _ in range(4):
t.forward(100)
t.left(90)графика turtle python (рисование с помощью модуля turtle в python)
Ошибка: после рисования квадрата черепаха не возвращается в исходное положение. Это не ошибка, а особенность - при необходимости координаты сбрасывают командой t.goto(0,0).
Как изменить цвет линии и заливки?
t.pencolor('red') устанавливает цвет линии, t.fillcolor('yellow') - цвет заливки. Для закрашивания замкнутой области используют t.begin_fill() и t.end_fill().
t.color('blue', 'lightblue')
t.begin_fill()
for _ in range(4):
t.forward(100)
t.left(90)
t.end_fill()
Python turtle точки (рисование точек с помощью turtle в python)
Как рисовать без оставления следа?
Методы t.penup() и t.pendown() поднимают и опускают перо. В поднятом состоянии перемещение не оставляет линии. Это удобно для перехода к новой позиции.
t.penup()
t.goto(-100, 100)
t.pendown()
t.circle(50)Python turtle фигуры (какие фигуры можно нарисовать с помощью turtle в python)
Проблема: при использовании t.circle(radius) черепаха перемещается вдоль окружности, начиная с нижней точки. Если требуется рисовать окружность из центра, предварительно смещают черепаху вверх на радиус.
Расширенные примеры работы с turtle
Как нарисовать спираль?
Спираль получается при постепенном увеличении длины шага и повороте на фиксированный угол.
import turtle
t = turtle.Turtle()
t.speed(0)
length = 5
for _ in range(100):
t.forward(length)
t.left(45)
length += 2
turtle.exitonclick()Python turtle colors (цвета в модуле turtle python)
Результат: спираль из прямых отрезков, расходящаяся от центра.
Turtle library python (основы работы с turtle)
Как нарисовать звезду?
Для пятиконечной звезды угол поворота 144 градуса (180 - 36 = 144). Цикл из пяти итераций.
import turtle
t = turtle.Turtle()
t.color('gold')
t.begin_fill()
for _ in range(5):
t.forward(150)
t.right(144)
t.end_fill()
turtle.exitonclick()Результат: золотая пятиконечная звезда.
Как использовать события мыши для рисования?
Модуль turtle позволяет привязать функцию к клику на экране. Пример: точка в месте клика.
import turtle
def draw_dot(x, y):
t.penup()
t.goto(x, y)
t.pendown()
t.dot(10, 'red')
screen = turtle.Screen()
screen.onclick(draw_dot)
screen.mainloop()После клика мышью на экране появляются красные точки в месте клика.
Как создать анимацию с помощью таймера?
Метод screen.ontimer(func, milliseconds) позволяет вызывать функцию через заданный интервал. Пример: вращающаяся черепаха.
import turtle
t = turtle.Turtle()
t.shape('turtle')
t.speed(0)
def rotate():
t.left(1)
screen.ontimer(rotate, 10)
screen = turtle.Screen()
screen.tracer(0)
rotate()
screen.mainloop()Черепаха непрерывно вращается по часовой стрелке.
Как работать с несколькими черепахами?
Создание нескольких экземпляров Turtle для параллельного рисования. Важно: каждая черепаха имеет свои координаты и атрибуты.
import turtle
t1 = turtle.Turtle()
t2 = turtle.Turtle()
t1.color('red')
t2.color('blue')
t1.left(45)
t2.left(-45)
for _ in range(4):
t1.forward(100)
t2.forward(100)
t1.left(90)
t2.left(90)
turtle.exitonclick()Два квадрата, повёрнутые на 45 градусов друг относительно друга.
Как управлять обновлением экрана для ускорения?
При сложных рисунках множество операций замедляют анимацию. Выключение автоматического обновления screen.tracer(0) и принудительное обновление screen.update() после завершения рисования ускоряют процесс.
import turtle
screen = turtle.Screen()
screen.tracer(0)
t = turtle.Turtle()
for _ in range(100):
t.forward(150)
t.right(91)
screen.update()
turtle.exitonclick()Рисование спирали происходит мгновенно (результат появляется сразу целиком).
Дополнительные примеры с кодом и результатами
Пример: Рисование снежинки Коха (фрактал)
import turtle
def koch_curve(t, length, depth):
if depth == 0:
t.forward(length)
else:
length /= 3.0
koch_curve(t, length, depth-1)
t.left(60)
koch_curve(t, length, depth-1)
t.right(120)
koch_curve(t, length, depth-1)
t.left(60)
koch_curve(t, length, depth-1)
t = turtle.Turtle()
t.speed(0)
t.penup()
t.goto(-200, 100)
t.pendown()
for _ in range(3):
koch_curve(t, 400, 3)
t.right(120)
turtle.exitonclick()На экране отображается снежинка Коха (треугольная фрактальная форма).
Пример: Движение черепахи по заданному пути (управление клавишами)
import turtle
t = turtle.Turtle()
t.shape('turtle')
def move_forward():
t.forward(10)
def turn_left():
t.left(15)
def turn_right():
t.right(15)
screen = turtle.Screen()
screen.onkey(move_forward, 'Up')
screen.onkey(turn_left, 'Left')
screen.onkey(turn_right, 'Right')
screen.listen()
screen.mainloop()Черепаха управляется стрелками клавиатуры: вверх - вперёд, влево/вправо - поворот.
Пример: Рисование разноцветной спирали с изменением цвета
import turtle
t = turtle.Turtle()
t.speed(0)
colors = ['red', 'purple', 'blue', 'green', 'orange', 'yellow']
for x in range(360):
t.pencolor(colors[x % 6])
t.width(x / 100 + 1)
t.forward(x)
t.left(59)
turtle.exitonclick()Цветная спираль с увеличивающейся толщиной линии и изменением цвета.
Пример: Заливка сложной фигуры (многоугольник)
import turtle
screen = turtle.Screen()
screen.bgcolor('black')
t = turtle.Turtle()
t.color('white', 'cyan')
t.begin_fill()
for _ in range(8):
t.forward(100)
t.left(135)
t.end_fill()
t.hideturtle()
turtle.exitonclick()Восьмиугольник (октагон) с циановой заливкой на чёрном фоне.