Я считаю, что это ошибка в документации, но она понятна.
Во-первых, вы четко можете нарисовать то, что хотите, закрыв фигуру самостоятельно:
from turtle import Turtle, Screen
screen = Screen()
turtle = Turtle(visible=False)
turtle.width(5)
turtle.color("red", "blue")
position = turtle.position()
turtle.begin_fill()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.goto(position)
turtle.end_fill()
screen.exitonclick()
Так что жесделка с полигонами?Что ж, если вы не реализуете код самостоятельно, по умолчанию черепаха ничего не может сделать с полигонами, кроме как использовать их в качестве курсоров черепах.В этом случае он передает их на tkinter, который отвечает за закрытие многоугольника:
from turtle import Turtle, Screen
screen = Screen()
turtle = Turtle(visible=False)
turtle.penup()
turtle.begin_poly()
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
turtle.end_poly()
screen.register_shape("myShape", turtle.get_poly())
turtle.shape("myShape") # when the polygon gets closed
turtle.shapesize(outline=5)
turtle.color("red", "blue")
turtle.stamp()
screen.exitonclick()
(я предполагаю, что это в tkinter's canvas.coords()
, где многоугольник закрывается.) Обратите внимание, что ваш width(5)
ничего не значит в этом случае, а также *_fill()
, поскольку ширина контура курсора устанавливается с помощью shapesize()
, и курсор естественным образом заполнен.Ему не нужен цвет, указанный во время создания полигона, вы можете подождать, пока новый курсор не будет развернут.
Я считаю, что это утверждение в документации end_poly()
:
lastвершина многоугольника.Это будет связано с первой вершиной.
Должен действительно находиться в разделе многоугольника документации register_shape()
черепахи.Но вы можете понять ошибку, поскольку черепаха думает только, что роль *_poly()
заключается в создании новых курсоров.Принимая во внимание, что полигоны должны быть первоклассным, гибким типом данных в черепахе.