python 乌龟在使用示踪剂 (0,0) 时创建闪烁的图像
python turtle creating flickering images when using tracer(0,0)
我正在尝试制作一个可以重复绘制两条线的程序。我的代码是
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
screen.tracer(0,0)
while True:
screen.clear()
t.penup()
t.goto(1,12)
t.pendown()
t.goto(4,67)
t.penup()
t.goto(50, 3)
t.pendown()
t.goto(4, 73)
screen.update()
我希望这会在 turtle 中显示两条不闪烁的线。但是它正在画一条线并且那条线在闪烁。线条确实需要每一帧都重新绘制,这样我就可以用线条做一些其他的事情。为什么会这样?
简短回答:不要 screen.clear()
,而是 t.clear()
。
清除屏幕时,会将其许多属性重置为默认值,包括 tracer()
设置。您只是想清除乌龟在上一次迭代中绘制的任何内容,所以改为清除乌龟。
从长远来看,您不希望 while True:
在像 turtle 这样的事件驱动环境中。我会把这段代码写得更像:
from turtle import Screen, Turtle
def one_step():
turtle.clear()
turtle.penup()
turtle.goto(1, 12)
turtle.pendown()
turtle.goto(4, 67)
turtle.penup()
turtle.goto(50, 3)
turtle.pendown()
turtle.goto(4, 73)
screen.update()
screen.ontimer(one_step, 50)
screen = Screen()
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
one_step()
screen.mainloop()
我正在尝试制作一个可以重复绘制两条线的程序。我的代码是
import turtle
screen = turtle.Screen()
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
screen.tracer(0,0)
while True:
screen.clear()
t.penup()
t.goto(1,12)
t.pendown()
t.goto(4,67)
t.penup()
t.goto(50, 3)
t.pendown()
t.goto(4, 73)
screen.update()
我希望这会在 turtle 中显示两条不闪烁的线。但是它正在画一条线并且那条线在闪烁。线条确实需要每一帧都重新绘制,这样我就可以用线条做一些其他的事情。为什么会这样?
简短回答:不要 screen.clear()
,而是 t.clear()
。
清除屏幕时,会将其许多属性重置为默认值,包括 tracer()
设置。您只是想清除乌龟在上一次迭代中绘制的任何内容,所以改为清除乌龟。
从长远来看,您不希望 while True:
在像 turtle 这样的事件驱动环境中。我会把这段代码写得更像:
from turtle import Screen, Turtle
def one_step():
turtle.clear()
turtle.penup()
turtle.goto(1, 12)
turtle.pendown()
turtle.goto(4, 67)
turtle.penup()
turtle.goto(50, 3)
turtle.pendown()
turtle.goto(4, 73)
screen.update()
screen.ontimer(one_step, 50)
screen = Screen()
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
one_step()
screen.mainloop()