Вместо того, чтобы вводить другой модуль, такой как import time
, и создавать множество глобальных черепах, которые не будут собирать мусор, я бы использовал вашу существующую черепаху, как только она закончит рисование, и собственные ontimer
события черепахи для оживить знак:
from turtle import Screen, Turtle
def blink_on():
turtle.write("STOP", align="center", font=("Impact", 50))
screen.ontimer(blink_off, 1000)
def blink_off():
turtle.undo()
screen.ontimer(blink_on, 1000)
turtle = Turtle()
turtle.fillcolor("red")
turtle.begin_fill()
for _ in range(8):
turtle.forward(60)
turtle.left(45)
turtle.end_fill()
turtle.forward(20)
turtle.right(90)
turtle.fillcolor("black")
turtle.begin_fill()
for _ in range(2):
turtle.forward(180)
turtle.left(90)
turtle.forward(20)
turtle.left(90)
turtle.end_fill()
turtle.hideturtle()
turtle.pencolor("white")
turtle.penup()
turtle.goto(30, 40)
screen = Screen()
blink_on()
screen.exitonclick()
Одно из различий между этим подходом и решением @ glhr заключается в том, что если вы закроете окно другого решения, пока оно мигает, вы получите дюжину строк сообщений об ошибках из-за несинхронизированных событий. Вы не должны получать никаких ошибок с этим решением, поскольку его мигание синхронно с циклом событий черепахи.