【问题标题】:Hiding the turtle in python turtle drawing在 python 乌龟绘图中隐藏乌龟
【发布时间】:2023-03-28 01:58:01
【问题描述】:

我试图让它从程序的开头隐藏海龟,但即使在我将海龟声明为变量 t 的正下方放置 t.hideturtle() 之后,海龟似乎仍然出现在中间绘图。

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

【问题讨论】:

  • 请通过minimal reproducible example 缩小问题范围。首先,尝试去除不同的颜色;我认为它们与问题无关。此外,rxry 未使用。
  • 我能够在11 lines 中重现该问题(加上 4 个空白行以匹配您的布局)。如果你愿意,你可以复制它。
  • @wjandrea 谢谢!

标签: python turtle-graphics python-turtle


【解决方案1】:

这是一个棘手的问题。

这里的关键问题是您的第一条语句创建了一个海龟并返回它的屏幕。那只乌龟仍然可见。您的第二个语句创建了一个新的海龟,您将其隐藏。将顺序更改为:

t = turtle.Turtle()
s = t.getscreen()

一切都按预期进行。

【讨论】:

    【解决方案2】:

    @TimRoberts 写道:

    这里的关键问题是您的第一个语句创建了一个海龟 并返回您的屏幕。那只乌龟仍然可见。你的第二个 语句创建一个新的海龟,你可以隐藏它。

    这是混合turtle 的面向对象 API 和它的功能 API 的问题。如果我们更改import 以强制 使用面向对象的API,并阻止功能性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 乌龟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2010-11-09
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多