在 python 乌龟绘图中隐藏乌龟
Hiding the turtle in python turtle drawing
我试图让它从程序开始时就隐藏起来,但即使在将 t.hideturtle()
放在我将海龟声明为变量 t 的正下方之后,海龟似乎仍然出现在图的中间。
import turtle
from random import randint
s = turtle.getscreen()
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)
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")
这是一个棘手的问题。
这里的关键问题是您的第一个语句创建了一只乌龟,而 returns 您创建了它的屏幕。那只乌龟仍然可见。你的第二个语句创建了一个你隐藏的新海龟。将顺序更改为:
t = turtle.Turtle()
s = t.getscreen()
一切都按预期工作。
@TimRoberts 写道:
The key problem here is that your first statement creates one turtle
and returns you its screen. That turtle remains visible. Your second
statement creates a new turtle, which you hide.
这是混合 turtle 的 面向对象 API 和 功能性 API 的问题。如果我们将 import
更改为强制 just 面向对象的 API,并阻止功能性的,我们可以这样做:
from turtle import Screen, Turtle
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
或者改为:
from turtle import Screen, Turtle
turtle = Turtle()
turtle.hideturtle()
screen = Screen()
这没什么区别。通过混合函数式 API 和面向对象的 API,您可以很容易地无意中创建此代码中未调用的 default 海龟。
我试图让它从程序开始时就隐藏起来,但即使在将 t.hideturtle()
放在我将海龟声明为变量 t 的正下方之后,海龟似乎仍然出现在图的中间。
import turtle
from random import randint
s = turtle.getscreen()
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)
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")
这是一个棘手的问题。
这里的关键问题是您的第一个语句创建了一只乌龟,而 returns 您创建了它的屏幕。那只乌龟仍然可见。你的第二个语句创建了一个你隐藏的新海龟。将顺序更改为:
t = turtle.Turtle()
s = t.getscreen()
一切都按预期工作。
@TimRoberts 写道:
The key problem here is that your first statement creates one turtle and returns you its screen. That turtle remains visible. Your second statement creates a new turtle, which you hide.
这是混合 turtle 的 面向对象 API 和 功能性 API 的问题。如果我们将 import
更改为强制 just 面向对象的 API,并阻止功能性的,我们可以这样做:
from turtle import Screen, Turtle
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
或者改为:
from turtle import Screen, Turtle
turtle = Turtle()
turtle.hideturtle()
screen = Screen()
这没什么区别。通过混合函数式 API 和面向对象的 API,您可以很容易地无意中创建此代码中未调用的 default 海龟。