你如何在 python 3 中创建一个闪烁的单词。就像停止标志中的 STOP 闪烁一样

how do you create a flashing word in pyhton 3. Like having STOP blink in a stop sign

我必须让“停止”一词在停车标志中闪烁或闪烁。

我用乌龟图形制作了停车标志,但不知道如何让这个词停止闪烁。这是我 class 的作业。

如有任何帮助,我们将不胜感激。

这是我到目前为止所做的代码:

import turtle

t = turtle.Turtle()

t.color("black", "red")
t.begin_fill()
for count in range(8):
    t.forward(60)
    t.left(45)
t.forward(20)
t.end_fill()
t.color("black")
t.begin_fill()
t.right(90)
t.forward(180)
t.left(90)
t.forward(20)
t.left(90)
t.forward(180)
t.end_fill()
t.left(90)
t.forward(20)
t.color("white")
t.penup()
t.goto(-20, 40)
t.write("STOP", font=("Impact", 50))
t.goto(-30, -10)

的基础上,可以通过创建一个单独的Turtle对象来写入和清除文本来实现:

# create second turtle used for blinking text
eraseable = turtle.Turtle()
eraseable.color("white")
eraseable.hideturtle()
eraseable.up()
eraseable.setposition(t.position())

你可以像这样使用它来使文​​本每秒闪烁一次:

import time

# blink 20 times
for i in range(0,20):
    eraseable.write("STOP", font=("Impact", 50))
    time.sleep(0.5)
    eraseable.clear()
    time.sleep(0.5)

完整演示:https://repl.it/@glhr/55672932

与其引入另一个模块,如 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 的解决方案之间的一个区别是,如果您在另一个解决方案 window 闪烁时关闭它,由于不同步事件,您将收到十几行错误消息。使用此解决方案不会出现任何错误,因为它的闪烁与 turtle 的事件循环同步。