Python海龟窗口执行完代码后如何关闭它?

Posted

技术标签:

【中文标题】Python海龟窗口执行完代码后如何关闭它?【英文标题】:How to close the Python turtle window after it does its code? 【发布时间】:2016-08-18 00:25:15 【问题描述】:

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

有没有办法在海龟工作完成后对窗口进行编程?

【问题讨论】:

【参考方案1】:

turtle.bye(),又名turtle.Screen().bye(),关闭海龟图形窗口。

通常,缺少turtle.mainloop() 或其变体之一会导致窗口关闭,因为程序将退出并关闭所有内容。 turtle.mainloop() 应该是海龟图形程序中执行的最后一条语句,除非该脚本是从 Python IDLE -n 中运行的,它禁用了 turtle.mainloop() 和变体。

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

turtle.exitonclick() aka 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 如果不是 TurtleScreen。 _RUNNING: 1292 TurtleScreen._RUNNING = True -> 1293 raise Terminator ` @bmi,如果您需要有关问题的帮助,请向 SO(不在评论中)发布问题,包括您的(可运行)代码和错误消息。 cdlane,我终于找到了解决方案,让别人知道这个解决方案并不总是有效,这并不可惜。不要害怕。【参考方案2】:

在文件末尾添加tkinter.mainloop()

例子

import turtle
import tkinter as TK

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

TK.mainloop()

【讨论】:

此代码无法如图所示工作,并且建议的解决方案与 OP 所追求的相反——mainloop() 保持窗口打开,它不会关闭它。离开文件末尾的mainloop() 将允许窗口关闭。 @clane 至少您可以使用此代码关闭窗口。如果省略此代码,则甚至无法手动关闭窗口。因此,虽然不是 100% 在现场,但它会有所帮助。【参考方案3】:

在文件末尾尝试exitonclick()done() 关闭窗口。

【讨论】:

除了这两种方法还有其他方法吗?我正在使用 IDLE 运行代码,但没有按预期运行。 turtle.done() 不关闭窗口,它是turtle.mainloop() 的同义词,它将控制权转移到 tkinter 事件循环,该循环保持窗口打开,直到某些用户操作关闭它!

以上是关于Python海龟窗口执行完代码后如何关闭它?的主要内容,如果未能解决你的问题,请参考以下文章

Python海龟围绕8字走的代码?

python如何在程序运行完后不关闭窗口?

最简单的让Python程序运行完后命令行窗口(cmd窗口)不自动关闭的方法

Turtle graphics - 如何控制窗口何时关闭?

OSX - 如何在“退出”命令执行后自动关闭终端窗口。

powershell快捷方式里添加命令,执行完命令后会关闭窗口,怎么能在执行完命令后不让窗口关闭