You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:24:02