Графический модуль turtle в Python.
Популярный способ познакомить детей с программированием.
Графический модуль turtle — популярный способ познакомить детей с программированием. Он был частью оригинального языка программирования Logo.
Представьте роботизированную черепаху, начинающуюся с точки (0, 0) в плоскости x/y. После импорта модуля turtle дайте ей команду turtle.forward(15) , и она переместится (на экране!) на 15 пикселей в направлении, в котором смотрит, рисуя линию при движении. Дайте ей команду turtle.right(25) , и она повернется на месте на 25 градусов по часовой стрелке.
Комбинируя вместе эти и подобные команды, можно легко рисовать замысловатые формы и изображения.
Содержание:
Общие сведения и подходы работы с модулем.
Модуль turtle — это расширенная реализация одноименного модуля из стандартного дистрибутива Python до версии Python 2.5.
Он сохраняет достоинства старого модуля turtle и почти на 100% совместим с ним. Это означает, чтобы дать возможность обучающемуся программисту использовать все команды, классы и методы в интерактивном режиме при использовании модуля из IDLE, запущенного с ключом -n .
Модуль turtle предоставляет графические примитивы черепахи как объектно-ориентированным, так и процедурно-ориентированным способами. Так как turtle для базовой графики использует tkinter , то необходима версия Python3, установленная с поддержкой Tk .
Объектно-ориентированный интерфейс использует по существу два + два класса:
Класс TurtleScreen определяет графические окна как площадку для рисования. Его конструктору требуется аргумент tkinter.Canvas или ScrolledCanvas . Его следует использовать, когда черепаха используется как часть какого-либо приложения.
Функция Screen() возвращает одноэлементный объект подкласса TurtleScreen . Эту функцию следует использовать, когда черепаха используется как автономный инструмент для создания графики. Как одноэлементный объект, наследование от его класса невозможно.
Все методы TurtleScreen / Screen также существуют как функции, то есть как часть процедурно-ориентированного интерфейса.
RawTurtle определяет объекты Turtle , которые рисуются на TurtleScreen . Его конструктору требуется аргумент Canvas , ScrolledCanvas или TurtleScreen , чтобы объекты RawTurtle знали, где рисовать.
Производным от RawTurtle является подкласс Turtle , который использует экземпляр Screen , который создается автоматически, если еще не присутствует.
Все методы RawTurtle / Turtle также существуют как функции, то есть как часть процедурно-ориентированного интерфейса.
Процедурный интерфейс предоставляет функции, производные от методов классов Screen и Turtle . Названия у них такие же, как у соответствующих методов. Объект экрана screen всегда создается автоматически, когда вызывается функция, производная от метода Screen . Безымянный объект turtle всегда создается автоматически, когда вызывается какая-либо из функций, производных от метода Turtle .
Чтобы использовать несколько черепах на экране, необходимо использовать объектно-ориентированный интерфейс.
Пример простого рисунка с модулем turtle .
Файл конфигурации модуля turtle .
Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle , чтобы сохранить максимально возможную совместимость с ним.
Если необходимо использовать другую конфигурацию, которая лучше отражает функции этого модуля или лучше соответствует вашим потребностям, например для использования с классами, то можно подготовить файл конфигурации turtle.cfg , который будет прочитан во время импорта и изменить конфигурацию в соответствии с его настройками.
Встроенная конфигурация будет соответствовать следующему файлу turtle.cfg :
Краткое объяснение записей конфигурации:
- Первые четыре строки соответствуют аргументам метода Screen.setup() .
- Строки 5 и 6 соответствуют аргументам метода Screen.screensize() .
- Форма пера может быть любой из встроенных фигур, например, стрелка, черепаха и т. д. Для получения дополнительной информации попробуйте help(shape) .
- Если не хотите использовать цвет заливки (т.е. сделать черепаху прозрачной), то необходимо написать fillcolor = '' (при этом, в cfg-файле непустые строки не должны иметь кавычек).
- Если необходимо отразить состояние модуля turtle , то необходимо использовать resizemode = auto .
- Записи exampleturtle и examplescreen определяют имена этих объектов в том виде, в котором они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.
- using_IDLE : Установите значение True , если регулярно работаете с IDLE и его переключателем -n . Это предотвратит переход turtle.exitonclick() в основной цикл.
В каталоге, где хранится модуль, может быть файл turtle.cfg , а в текущем рабочем каталоге может быть еще один файл, созданный пользователем. Последний переопределит настройки первого.
Пакет с примерами turtledemo .
Пакет turtledemo включает набор демонстрационных скриптов. Эти сценарии можно запускать и просматривать с помощью прилагаемой демонстрационной программы следующим образом:
Кроме того, можно запускать демонстрационные скрипты индивидуально. Например,
Каталог пакета turtledemo содержит:
- Программу-просмотрщик __main__.py , которую можно использовать для просмотра исходного кода скриптов и их одновременного запуска.
- Несколько скриптов, демонстрирующих различные функции модуля turtle . Доступ к примерам можно получить через меню "Examples". Их также можно запускать автономно.
- Файл turtle.cfg , который служит примером того, как писать и использовать такие файлы.
ПРИМЕЧАНИЕ: Если запуск в терминале команды python -m turtledemo выдает /usr/bin/python : No module named turtledemo, то необходимо установить файлы примеров установленной версии Python. Например для Linux:
И все заработает.
Установка поддержки Tk для Python3 (Tkinter) в Linux/X11.
Запустите оболочку Python (например, /usr/bin/python3 ) и проверьте импорт модуля turtle (например from turtle import * ). Если при попытке импортировать turtle выводится сообщение об ошибке "ModuleNotFoundError: No module named 'tkinter'", то в большинстве случаев сообщение говорит о том, что нужно установить поддержку Tcl/Tk.
В основном дистрибутивы Linux выделяют поддержку Tkinter в отдельный пакет. Это избавляет от установки библиотек Tcl / Tk для людей, которые используют Python, но не используют Tkinter . Проще говоря, необходимо установить пакет с именем python3-tk , который и обеспечит установку и поддержку в системе соответствующих версий библиотек Tcl / Tk .
В данном случае этот пакет предоставляет библиотеки Tcl / Tk для использования с Python3.
turtle — Turtle graphics¶
Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzeig, Seymour Papert and Cynthia Solomon in 1967.
Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an import turtle , give it the command turtle.forward(15) , and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25) , and it rotates in-place 25 degrees clockwise.
Turtle can draw intricate shapes using programs that repeat simple moves.

By combining together these and similar commands, intricate shapes and pictures can easily be drawn.
The turtle module is an extended reimplementation of the same-named module from the Python standard distribution up to version Python 2.5.
It tries to keep the merits of the old turtle module and to be (nearly) 100% compatible with it. This means in the first place to enable the learning programmer to use all the commands, classes and methods interactively when using the module from within IDLE run with the -n switch.
The turtle module provides turtle graphics primitives, in both object-oriented and procedure-oriented ways. Because it uses tkinter for the underlying graphics, it needs a version of Python installed with Tk support.
The object-oriented interface uses essentially two+two classes:
The TurtleScreen class defines graphics windows as a playground for the drawing turtles. Its constructor needs a tkinter.Canvas or a ScrolledCanvas as argument. It should be used when turtle is used as part of some application.
The function Screen() returns a singleton object of a TurtleScreen subclass. This function should be used when turtle is used as a standalone tool for doing graphics. As a singleton object, inheriting from its class is not possible.
All methods of TurtleScreen/Screen also exist as functions, i.e. as part of the procedure-oriented interface.
RawTurtle (alias: RawPen ) defines Turtle objects which draw on a TurtleScreen . Its constructor needs a Canvas, ScrolledCanvas or TurtleScreen as argument, so the RawTurtle objects know where to draw.
Derived from RawTurtle is the subclass Turtle (alias: Pen ), which draws on “the” Screen instance which is automatically created, if not already present.
All methods of RawTurtle/Turtle also exist as functions, i.e. part of the procedure-oriented interface.
The procedural interface provides functions which are derived from the methods of the classes Screen and Turtle . They have the same names as the corresponding methods. A screen object is automatically created whenever a function derived from a Screen method is called. An (unnamed) turtle object is automatically created whenever any of the functions derived from a Turtle method is called.
To use multiple turtles on a screen one has to use the object-oriented interface.
In the following documentation the argument list for functions is given. Methods, of course, have the additional first argument self which is omitted here.
Графика в Python при помощи модуля Turtle. Часть 1
Изучая обилие каналов в любимой телеге я увидел ссылку на плейлист Модуль turtle. Создаем графику в Python. Чего уж говорить, а рост интереса к змейке игнорировать просто нельзя! Я уже молчу о том, что он занял все топы рекомендаций к изучению, а есть еще и машинное обучение, в котором без него сейчас просто никак. Иными словами: хочешь быть в теме — учи Python. Ну и я начал учить, не то чтобы прям нырнул, но постепенно иду ко дну погружаюсь, разбираюсь.
Рекомендую к просмотру все эти видео, очень интересно. А тут я распишу основы работы с turtle и интересные моменты.
Писать все буду в своей любимой PyCharm, а если во время выполнения возникают ошибка похожая на ImportError: DLL load failed while importing _tkinter, то видимо у вас система 64 бит, а вот Python скачан для 32. Просто удалите его и скачайте заново, уточнив предварительно, какая у вас система.
Импорт черепашки
Ладно. Перейдем к самой Черепашке (Turtle). Создали новый проект, файлик, и приступаем.
Как и с любым модулем, для работы с turtle её нужно импортировать. Делаем это вот так: