如何在Python turtle完成代码后关闭窗口?

20

我正在使用Python 3.5编写一个包含海龟绘图的简单程序,遇到了问题:在海龟绘图完成后,用户必须手动关闭窗口。

有没有办法在海龟绘图完成后程序自动关闭窗口?

3个回答

24

turtle.bye(), 也称为 turtle.Screen().bye(),用于关闭海龟绘图窗口。

通常情况下,如果缺少 turtle.mainloop()或其变体之一,则窗口将被关闭,因为程序将退出并关闭所有内容。除非脚本在禁用 turtle.mainloop() 和其变体的 Python IDLE -n 中运行,否则 turtle.mainloop() 应该是海龟绘图程序中执行的最后一个语句。

turtle.Screen().mainloop()turtle.done()turtle.mainloop() 的变体。

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


这并没有帮助,下一次运行以奇怪的错误结束:` \AppData\Local\Programs\Python\Python39\lib\turtle.py in _update_data(self) 2645 2646 def _update_data(self): -> 2647 self.screen._incrementudc() 2648 if self.screen._updatecounter != 0: 2649 return~\AppData\Local\Programs\Python\Python39\lib\turtle.py in _incrementudc(self) 1291 if not TurtleScreen._RUNNING: 1292 TurtleScreen._RUNNING = True -> 1293 raise Terminator` - bmi
如果你需要帮助解决问题,可以在 Stack Overflow 上发布一个问题(不要在评论中提问),包括可运行的代码和错误信息。@bmi - cdlane
cdlane,我终于找到了一个解决方案,让别人知道这个解决方案并不总是有效,并不可耻。不要害怕这个事实。 - bmi

-1
在文件末尾添加tkinter.mainloop()
示例:
import turtle
import tkinter as TK

t = turtle.Pen()
for x in range(100):
    t.forward(x)
    t.left(90)

TK.mainloop()

1
这段代码并不像所示的那样工作,而且提出的解决方案与 OP 所想的相反 -- mainloop() 会保持窗口打开,而不是关闭它。将 mainloop() 留在文件末尾之外将允许窗口关闭。 - cdlane
@clane 至少你可以用这段代码关闭窗口。如果你省略了这段代码,那么你甚至无法手动关闭窗口。因此,虽然不是百分之百准确,但它有所帮助。 - user3934058

-2
在文件末尾尝试使用exitonclick()或者done()来关闭窗口。

1
除了这两种方法,还有其他方法吗?我正在使用IDLE运行代码,但结果并不如我预期。 - study
1
"turtle.done()"不会关闭窗口,它是"turtle.mainloop()"的同义词,它将控制权转移到tkinter事件循环中,直到某个用户操作关闭它为止,从而保持窗口打开状态! - cdlane

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