Я вижу две проблемы с вашим кодом.Во-первых, вы помещаете begin_fill()
и end_fill()
в вашу петлю октогона - они должны быть обернуты вокруг петли, а не быть ее частью.Во-вторых, вы, как правило, делаете вещи более сложными, чем необходимо, включая добавление кода, который не имеет отношения к вашему результату (например, stamp()
, shapesize()
, setheading()
и т. Д.).Вот упрощенная переделка вашего кода с фиксированной заливкой:
from turtle import Screen, Turtle
SIDE = 200
PEN_SIZE = 10
FONT_SIZE = 150
FONT = ("Arial", FONT_SIZE, "bold")
screen = Screen()
screen.bgcolor("black")
turtle = Turtle()
turtle.hideturtle()
turtle.pensize(PEN_SIZE)
turtle.penup()
# Draw white octagon with red fill
turtle.goto(-SIDE/2, -SIDE/2 + -SIDE/(2 ** 0.5)) # octogon geometry
turtle.color("white", "red") # color() sets both pen and fill colors
turtle.pendown()
turtle.begin_fill()
for _ in range(8):
turtle.forward(SIDE)
turtle.left(45)
turtle.end_fill()
turtle.penup()
# Write "STOP"
turtle.goto(0, -FONT_SIZE/2) # roughly font baseline
turtle.pencolor("white")
turtle.write("STOP", align="center", font=FONT) # write() doesn't need pendown()
screen.exitonclick()