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")

Он делает то, что вы хотите, и меньше ударов по гольфу.

Другие вопросы по тегам