Python turtle绘图调用hideturtle()后海龟仍可见问题咨询
海龟初始隐藏失效问题解决
根本原因
海龟对象初始化时默认处于可见状态,你是在对象创建完成后才执行hideturtle()操作,两者的时间差会导致海龟被短暂渲染到画布上,因此会看到初始闪现的情况。
解决方法
方法一:初始化时直接设置不可见
turtle.Turtle()支持传入visible参数,直接设为False即可让海龟创建时就处于隐藏状态,不会出现任何闪现,修改后的完整代码如下:
import turtle from random import randint s = turtle.getscreen() # 初始化时直接设置为不可见 t = turtle.Turtle(visible=False) rx = randint(50,100) ry = randint(50,100) width, height = 32,32 s.screensize(width, height) s.bgcolor("black") t.goto(0,0) t.speed(15) num=10 while num<=1000: r = randint(1,5) if r == 1: t.pencolor("white") elif r == 2: t.pencolor("#00FFFF") elif r == 3: t.pencolor("#89CFF0") elif r == 4: t.pencolor("#0000FF") elif r == 5: t.pencolor("#00FFFF") t.right(25) t.circle(num) num=num+10 count=num//10 print("ran",count,"times") # 避免运行完成后窗口直接闪退 turtle.done()
方法二:关闭画布自动刷新
先关闭画布的实时渲染,完成所有初始设置(包括隐藏海龟)后再开启刷新,也可以完全避免闪现:
import turtle from random import randint s = turtle.getscreen() # 关闭自动刷新 s.tracer(0) t = turtle.Turtle() t.hideturtle() rx = randint(50,100) ry = randint(50,100) width, height = 32,32 s.screensize(width, height) s.bgcolor("black") t.goto(0,0) t.speed(15) # 初始设置完成后开启自动刷新 s.tracer(1) num=10 while num<=1000: r = randint(1,5) if r == 1: t.pencolor("white") elif r == 2: t.pencolor("#00FFFF") elif r == 3: t.pencolor("#89CFF0") elif r == 4: t.pencolor("#0000FF") elif r == 5: t.pencolor("#00FFFF") t.right(25) t.circle(num) num=num+10 count=num//10 print("ran",count,"times") turtle.done()
内容的提问来源于stack exchange,提问作者nickg
相关产品推荐
相关产品推荐

