你如何在 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)
与其引入另一个模块,如 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 的事件循环同步。
我必须让“停止”一词在停车标志中闪烁或闪烁。
我用乌龟图形制作了停车标志,但不知道如何让这个词停止闪烁。这是我 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)
在
# 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)
与其引入另一个模块,如 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 的事件循环同步。