Python:如何重置海龟绘图窗口

7

我正在使用turtle制作一款纸牌二十一点游戏,每次玩一局后,turtle都会在上一局的基础上打印而不是清空窗口。是否有一种方法可以在调用时关闭窗口,或者还有其他方法可以解决这个问题?


抱歉如果我误解了,但是你想要的是turtle.clear()吗? - cmrn
据我理解,turtle.clear()只能清除turtle最后绘制的内容。我需要删除多个绘制的元素。 - Allie Hart
2个回答

20
我想澄清一下各种海龟函数的作用,因为在这个讨论中存在误解,包括当前接受的答案,因为方法名本身可能会令人困惑:


turtle.mainloop() 或称 turtle.Screen().mainloop() 将控制权转移到 tkinter 的事件循环。通常情况下,缺少 turtle.Screen().mainloop()(或 turtle.Screen().exitonclick() 等)会导致窗口关闭,因为程序将结束并关闭所有内容。这应该是一个海龟图形程序中除了在 Python IDLE -n 中运行脚本之外的最后一条语句。

turtle.done() (不会关闭窗口也不会重置任何东西。)turtle.mainloop() 的同义词。

turtle.clear() 删除 海龟绘制的所有内容(不仅仅是最后一个)。否则,不会影响海龟的状态。

turtle.reset() 执行 turtle.clear(),然后重置 海龟的状态(即方向、位置等)。

turtle.clearscreen() 或称 turtle.Screen().clear() 删除 所有 绘画和 所有 海龟,将窗口重置为其原始状态。

turtle.resetscreen() 或称 turtle.Screen().reset() 将屏幕上的 所有 海龟重置为它们的初始状态。

turtle.bye() 或称 turtle.Screen().bye() 关闭海龟图形窗口。在调用此函数后,我没有看到使用任何海龟图形命令的方法。

turtle.exitonclick() 或称 turtle.Screen().exitonclick() 将屏幕点击事件绑定为执行 turtle.Screen().bye(),然后调用 turtle.Screen().mainloop()


在不降低到支持turtle和Zelle's graphics.py的tkinter级别下,无法确定是否可以在turtle中关闭和重新打开图形窗口。

为了开始您的21点游戏的新一手,我猜想turtle.reset()turtle.resetscreen()是最好的选择。


1

来自评论:嗨,虽然链接是分享知识的好方法,但如果它们在未来失效,它们实际上并不能回答问题。在您的答案中添加回答问题的链接的基本内容。如果内容过于复杂或太大而无法适应此处,请描述所提出解决方案的一般思路。请记住始终保留对原始解决方案网站的链接引用。请参见:如何编写一个好答案? - sɐunıɔןɐqɐp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接