41

我有一个绘制一些海龟图形的小 python 脚本。当我的脚本运行完成后,乌龟屏幕会自动关闭,所以为了能看到一段时间的图形,我必须time.sleep(5)在脚本结束时使用延迟关闭。

有什么办法可以让这更加动态,即告诉python我想自己控制窗口的关闭?我不介意脚本在等待我的命令时是否不能做任何其他事情,但如果我不必去控制台执行 aread()或其他操作,我会更喜欢。理想情况下,即使脚本完成运行,画布也应该保持打开状态,但我可以接受一个停止脚本的解决方案,直到我关闭包含画布的窗口(或单击画布,或其他任何东西......)。

我该如何做到这一点?

4

5 回答 5

78

只需使用turtle.done()orturtle.Screen().exitonclick()作为您的海龟程序的最后一个命令。

于 2012-06-13T22:03:23.323 回答
24
import turtle

turtle.forward(100)
turtle.left(90)
turtle.forward(100)
# etc.

turtle.getscreen()._root.mainloop()  # <-- run the Tkinter main loop

(编辑:turtle.done()正如下面的 hua 所建议的那样不那么难看。)

于 2011-06-05T00:26:07.337 回答
10

只需使用从海龟模块本身导入的 mainloop() 函数!

import turtle


#Draw a square
for i in range(4):
    turtle.forward(200)
    turtle.left(90)


#calling for the mainloop()
turtle.mainloop()
于 2012-04-26T14:32:44.437 回答
3

尝试input()在代码末尾添加。

于 2012-01-23T03:36:37.673 回答
0

这将等待几次点击 - 并在您点击时绘制一个螺旋 - 直到它决定在最后一次点击时退出:

import turtle


win = turtle.Screen()
win.bgcolor("white")

tess = turtle.Turtle()

tess.speed(0)
tess.color("blue")             
tess.pensize(5)                 
offSet=30

def doNextEvent(x,y):

    global offSet
    global win
    tess.forward(20)
    tess.left(1+offSet)
    offSet=offSet-2
    if(offSet<1):
        win.exitonclick()


win.onclick(doNextEvent)
win.listen()
win.mainloop()
于 2014-06-01T14:04:13.390 回答