turtle.tracer工作不正常
我在为一个CodeGolf.SE比赛写代码时遇到了一些不明白的地方。虽然我的代码不是最好的(比如我通常不会用while 1
),但问题依然存在:
import time
from turtle import *
ht()
tracer(3)
while 1:
clear() #1
color("snow") #
a=time.strftime("#%H%M%S") #
bgcolor(a) #2
write(a,0,"center") #3
根据文档,tracer(3)
的意思是每三次屏幕更新才会绘制一次。我觉得这不太对,因为当我运行这个时,文字显示得不清楚(看起来在可见和不可见之间切换得非常快)。
我尝试了不同的tracer
参数,但都没有成功。我知道一个解决办法是用tracer(0)
,然后在需要的时候调用update()
,但我希望它能在不使用update()
的情况下正常工作。
下面的代码确实解决了这个问题,只是为了说明我的意思。根据我的理解,tracer(n)
应该在每第n步传播变化,但它似乎没有做到这一点:
import time
from turtle import*
tracer(0) #turn of auto-update
while 1:
reset()
ht()
color("snow")
a=time.strftime("#%H%M%S")
write(a,0,"center")
bgcolor(a)
update() #8 propagate changes
1 个回答
0
我会用现在的Python3 turtle库来处理这个问题,避免使用tracer()
,而是利用undo()
功能:
from turtle import*
import time
ht()
color("snow")
write("")
while 1:
undo()
a=time.strftime("#%H%M%S")
bgcolor(a)
write(a,0,"center")
这样做能达到你想要的效果,而且在操作上会更简单。