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海龟窗口执行完代码后如何关闭它?的主要内容,如果未能解决你的问题,请参考以下文章