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

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

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

【问题讨论】:

    标签: python python-3.x turtle-graphics


    【解决方案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 事件循环,该循环保持窗口打开,直到某些用户操作关闭它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2016-12-24
    相关资源
    最近更新 更多