Is there a way to remove a turtle from the screen?

喜夏-厌秋 提交于 2020-07-09 12:01:25

问题


I have the following code:

answer = "ABC"
flag.goto(-999, -999)
while (answer.lower != 'y' or answer.lower != 'n'):
    print("You got the flag! Free play(y/n)?")
    answer = input("")
    if answer.lower == 'y':
        pass
    if answer.lower == 'n':
        return None

I am trying to remove the turtle called flag, through adding it to a list then deleting it with del(testlist[0]), but it didn't work. The output is:

You got the flag! Free play(y/n)?
y
You got the flag! Free play(y/n)?
n
You got the flag! Free play(y/n)?

回答1:


Your question is confusing as the title and text ask one thing,
while your example code and output show something completely different.

Let's address this question:

Is there a way to remove a turtle from the screen?

Generally turtle.hideturtle() will do what you want. The only way to dispose of turtles once created is via a screen.clear() which will destroy all of them.

(The variable turtle above needs to be set to an instance of Turtle() and the variable screen needs to be set to the singular instance of Screen().




回答2:


You can get a better view on the Visibility of turtles from this documentation.

Basically, you can use either turtle.hideturtle() or turtle.ht() to make a turtle invisible.
But, that does not mean that the turtle is removed, and so it still takes up memory.

You can call turtle.Screen.clear(), but that resets everything, even the things you might want to keep.

If I were in a situation where I want to delete turtles instead of hiding them because doing that over and over again will take up too much memory, I'd simply hide the turtle, and when the program need another turtle, instead of creating another one, simply unhide the hidden turtle to be used again.



来源:https://stackoverflow.com/questions/62612990/is-there-a-way-to-remove-a-turtle-from-the-screen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!