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(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 ответ
То, как я бы подошел к этому с текущей черепахой Python3, это избежать 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")
Он делает то, что вы хотите, и меньше ударов по гольфу.