Сообщить об ошибке.

Толщина пера и его форма, модуль turtle в Python

Настройка толщины пера и его внешнего вида

В материале представлены команды, отвечающие за толщину линии пера, внешний вид, а так же другие его атрибуты в модуле turtle.

Примечание: можно использовать как функции модуля, так и одноименные методы экземпляра пера/холста. например:

>>> import turtle
# функция модуля
>>> turtle.pensize()
# создание экземпляра пера
>>> pen = turtle.Turtle()
>>> pen.pensize()

Содержание:


turtle.pensize(width=None),
turtle.width(width=None):

Методы turtle.pensize() и turtle.width() устанавливает толщину линии пера/карандаша равной width, или возвращает ее.

Если для turtle.resizemode() установлено значение 'auto', а форма пера является многоугольником, то этот многоугольник будет изображен с одинаковой толщиной линии.

Аргумент width - положительное целое число int. Если аргумент width не указан, то возвращается текущий размер пера черепахи.

# смотрим толщину пера
>>> turtle.pensize()
# 1

# дальше рисуем линии шириной 10 пикселей
>>> turtle.pensize(10)

turtle.pen(pen=None, **pendict):

Метод turtle.pen() возвращает или устанавливает атрибуты пера в "словарь пера" со следующими парами key/:

  • 'shown': True/False
  • 'pendown': True/False
  • 'pencolor': строка с цветом или цветовой кортеж
  • 'fillcolor': строка с цветом или цветовой кортеж
  • 'pensize': положительное число
  • 'speed': число в диапазоне 0..10
  • 'resizemode': 'auto' или 'user' или 'noresize'
  • 'stretchfactor': (positive number, positive number)
  • 'outline': положительное число
  • 'tilt': число

Этот словарь можно использовать в качестве аргумента для последующего вызова функции turtle.pen() для восстановления прежнего состояния пера. Более того, один или несколько из этих атрибутов могут быть предоставлены как ключевые аргументы. Это можно использовать для установки нескольких атрибутов пера в одном операторе.

Аргументы:

  • pen - словарь с некоторыми или всеми перечисленными выше ключами,
  • pendict - один или несколько ключевых аргументов с перечисленными выше ключами в качестве ключевых слов.
>>> turtle.pen(fillcolor="black", pencolor="red", pensize=10)
>>> sorted(turtle.pen().items())
# [('fillcolor', 'black'), ('outline', 1), ('pencolor', 'red'),
#  ('pendown', True), ('pensize', 10), ('resizemode', 'noresize'),
#  ('shearfactor', 0.0), ('shown', True), ('speed', 9),
#  ('stretchfactor', (1.0, 1.0)), ('tilt', 0.0)]
>>> penstate=turtle.pen()
>>> turtle.color("yellow", "")
>>> turtle.penup()
>>> sorted(turtle.pen().items())[:3]
# [('fillcolor', ''), ('outline', 1), ('pencolor', 'yellow')]
>>> turtle.pen(penstate, fillcolor="green")
>>> sorted(turtle.pen().items())[:3]
# [('fillcolor', 'green'), ('outline', 1), ('pencolor', 'red')]

turtle.shape(name=None):

Метод turtle.shape() устанавливает форму пера, в соответствии с настройками, соответствующих заданному именем name или, если имя не указано, возвращает имя текущей формы.

Фигура с именем name должна существовать в словаре фигур TurtleScreen. Изначально существуют многоугольники следующих форм: 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'. Чтобы узнать, как работать с фигурами, смотрите функцию turtle.register_shape().

Аргумент name - строка, которая является допустимым именем формы.

>>> turtle.shape()
# 'classic'
>>> turtle.shape("turtle")
>>> turtle.shape()
# 'turtle'

turtle.resizemode(rmode=None):

Метод turtle.resizemode() устанавливает для режима rmode одно из значений: 'auto', 'user', 'noresize'.

Если rmode не указан, то возвращает текущий режим. Различные режимы изменения размера имеют следующие эффекты:

  • 'auto': адаптирует внешний вид черепахи в соответствии со значением размера пера.
  • 'user': адаптирует внешний вид черепахи в соответствии со значениями stretchfactor и outlinewidth (контура), которые задаются с помощью turtle.shapeize().
  • 'noresize': никакой адаптации внешнего вида черепахи не происходит.

Если вызвать функцию turtle.shapesize() с аргументами, то произойдет автоматический вызов turtle.resizemode('user').

>>> turtle.resizemode()
# 'noresize'
>>> turtle.resizemode("auto")
>>> turtle.resizemode()
# 'auto'

turtle.shapesize(stretch_wid=None, stretch_len=None, outline=None),
turtle.turtlesize(stretch_wid=None, stretch_len=None, outline=None):

Методы turtle.turtlesize() и turtle.shapesize() возвращает или устанавливает растяжение пера x/y и/или контур outline.

Эта функция устанавливает turtle.resizemode('user'). Если и только если для turtle.resizemode() установлено значение 'user', перо будет отображаться растянутой в соответствии с ее факторами растяжения:

  • stretch_wid - это фактор растяжения, перпендикулярный ее ориентации (int),
  • stretch_len - фактор растяжения в направлении ее ориентации (int),
  • outline определяет ширину контура фигур (int).
>>> turtle.shapesize()
# (1.0, 1.0, 1)
>>> turtle.resizemode("user")
>>> turtle.shapesize(5, 5, 12)
>>> turtle.shapesize()
# (5, 5, 12)
>>> turtle.shapesize(outline=8)
>>> turtle.shapesize()
# (5, 5, 8)

turtle.shearfactor(shear=None):

Метод turtle.shearfactor() возвращает или устанавливает коэффициент сдвига пера.

Изменяет форму пера в соответствии с заданным фактором сдвига shear, который является тангенсом угла shear. Не меняет направление движения пера.

Если сдвиг shear не задан, то возвращает текущий коэффициент сдвига, т.е. тангенс угла сдвига shear, по которому срезаются линии, параллельные направлению движения черепахи.

>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.shearfactor(0.5)
>>> turtle.shearfactor()
# 0.5

turtle.tilt(angle):

Метод turtle.tilt() поворачивает форму пера на угол angle относительно текущего угла наклона. Не меняет направление движения пера черепахи.

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(30)
>>> turtle.fd(50)
>>> turtle.tilt(30)
>>> turtle.fd(50)

turtle.tiltangle(angle=None):

Метод turtle.tiltangle() возвращает или устанавливает текущий угол наклона angle.

Если задан угол angle, поворачивает фигуру пера так, чтобы она указывала в направлении, заданном углом, независимо от текущего угла наклона. Не меняет направление движения пера черепахи.

Если angle=None, то возвращает текущий угол наклона, т.е. угол между ориентацией формы пера и направление ее движения.

>>> turtle.reset()
>>> turtle.shape("circle")
>>> turtle.shapesize(5,2)
>>> turtle.tilt(45)
>>> turtle.tiltangle()
# 45.0

turtle.shapetransform(t11=None, t12=None, t21=None, t22=None):

Метод turtle.shapetransform() возвращает или устанавливает текущую матрицу преобразования формы пера.

Если ни один из элементов матрицы не задан, то возвращает матрицу преобразования как кортеж из 4 элементов. В противном случае устанавливает заданные элементы и преобразует форму черепахи в соответствии с матрицей, состоящей из первой строки t11, t12 и второй строки t21, t22.

Определитель t11 * t22 - t12 * t21 не должен быть нулевым, иначе возникает ошибка. Изменяет коэффициент растяжения, коэффициент сдвига и угол наклона в соответствии с заданной матрицей.

>>> turtle = Turtle()
>>> turtle.shape("square")
>>> turtle.shapesize(4,2)
>>> turtle.shearfactor(-0.5)
>>> turtle.shapetransform()
# (4.0, -1.0, -0.0, 2.0)

turtle.get_shapepoly():

Метод turtle.get_shapepoly() возвращает текущий многоугольник формы пера как кортеж пар координат. Это можно использовать для определения новой формы или компонентов составной формы.

>>> turtle.shape("square")
>>> turtle.shapetransform(4, -1, 0, 2)
>>> turtle.get_shapepoly()
# ((50, -20), (30, 20), (-50, 20), (-30, -20))