Графический модуль turtle
- популярный способ познакомить детей с программированием. Он был частью оригинального языка программирования Logo.
Представьте роботизированную черепаху, начинающуюся с точки (0, 0) в плоскости x/y. После импорта модуля turtle
дайте ей команду turtle.forward(15)
, и она переместится (на экране!) на 15 пикселей в направлении, в котором смотрит, рисуя линию при движении. Дайте ей команду turtle.right(25)
, и она повернется на месте на 25 градусов по часовой стрелке.
Комбинируя вместе эти и подобные команды, можно легко рисовать замысловатые формы и изображения.
turtle
;turtle
;turtledemo
;Tk
для Python3 (Tkinter) в Linux/X11.Модуль 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":
from turtle import * color('red', 'yellow') begin_fill() while True: forward(200) left(170) if abs(pos()) < 1: break end_fill() done()
turtle
.Встроенная конфигурация по умолчанию имитирует внешний вид и поведение старого модуля turtle
, чтобы сохранить максимально возможную совместимость с ним.
Если необходимо использовать другую конфигурацию, которая лучше отражает функции этого модуля или лучше соответствует вашим потребностям, например для использования с классами, то можно подготовить файл конфигурации turtle.cfg
, который будет прочитан во время импорта и изменить конфигурацию в соответствии с его настройками.
Встроенная конфигурация будет соответствовать следующему файлу turtle.cfg
:
width = 0.5 height = 0.75 leftright = None topbottom = None canvwidth = 400 canvheight = 300 mode = standard colormode = 1.0 delay = 10 undobuffersize = 1000 shape = classic pencolor = black fillcolor = black resizemode = noresize visible = True language = english exampleturtle = turtle examplescreen = screen title = Python Turtle Graphics using_IDLE = False
Краткое объяснение записей конфигурации:
Screen.setup()
.Screen.screensize()
.help(shape)
.fillcolor = ''
(при этом, в cfg-файле непустые строки не должны иметь кавычек).turtle
, то необходимо использовать resizemode = auto
.exampleturtle
и examplescreen
определяют имена этих объектов в том виде, в котором они встречаются в строках документации. Преобразование строк документации методов в строки документации функций удалит эти имена из строк документации.using_IDLE
: Установите значение True
, если регулярно работаете с IDLE
и его переключателем -n
. Это предотвратит переход turtle.exitonclick()
в основной цикл.В каталоге, где хранится модуль, может быть файл turtle.cfg
, а в текущем рабочем каталоге может быть еще один файл, созданный пользователем. Последний переопределит настройки первого.
turtledemo
.Пакет turtledemo
включает набор демонстрационных скриптов. Эти сценарии можно запускать и просматривать с помощью прилагаемой демонстрационной программы следующим образом:
python -m turtledemo
Кроме того, можно запускать демонстрационные скрипты индивидуально. Например,
python -m turtledemo.bytedesign
Каталог пакета turtledemo
содержит:
__main__.py
, которую можно использовать для просмотра исходного кода скриптов и их одновременного запуска.turtle
. Доступ к примерам можно получить через меню "Examples". Их также можно запускать автономно.turtle.cfg
, который служит примером того, как писать и использовать такие файлы.ПРИМЕЧАНИЕ: Если запуск в терминале команды python -m turtledemo
выдает /usr/bin/python
: No module named turtledemo, то необходимо установить файлы примеров установленной версии Python. Например для Linux:
sudo apt install python3-examples idle3
И все заработает...
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
.
$ sudo apt install python3-tk
В данном случае этот пакет предоставляет библиотеки Tcl
/Tk
для использования с Python3.