turtle.tracer工作不正常

0 投票
1 回答
1599 浏览
提问于 2025-04-18 10:40

我在为一个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")

这样做能达到你想要的效果,而且在操作上会更简单。

撰写回答