2011-06-04 26 views
19

我有一个小的python脚本,它绘制了一些乌龟图形。当我的脚本运行完毕后,乌龟屏幕会自动关闭,因此为了能够看到图形,我必须在脚本末尾使用time.sleep(5)来延迟关闭。Python Turtle图形 - 如何控制窗户关闭时的状态?

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

我该如何做到这一点?

+0

蟒蛇-i script.py从终端 – Squirrl 2015-01-24 22:48:03

回答

35

只是使用done()exitonclick()为你的龟程序的最后命令。

+1

'exitonclick'未定义。需要'win = turtle.Screen(); win.exitonclick()' – 2016-11-05 13:28:37

+0

无属性'Screen'。需要'win = turtle.getscreen()' – 2017-02-17 21:48:36

16
import turtle 

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

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

(编辑:turtle.done()由华的建议下面是不太难看)

+0

完美的作品!该脚本暂停,直到我关闭窗口,然后继续。 – 2011-06-05 13:14:29

+1

你需要getcreen()._根部分吗? turtle.mainloop()效果很好(在Python 3中)... – palsch 2016-01-31 16:25:03

-1

试着在你的代码的末尾添加input()

8

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

import turtle 


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


#calling for the mainloop() 
turtle.mainloop() 
+3

'AttributeError:'Turtle'object has no attribute'mainloop'' [PAG's answer](http://stackoverflow.com/a/6240234/4794)似乎工作正常。 – 2012-10-27 05:51:32

-3

这也是在等待几个点击 - 并同时单击绘制螺旋 - 直到它决定退出在最后点击:

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() 
+0

不,它不会:'AttributeError:'_Screen'对象没有属性'mainloop'' – SiHa 2015-07-02 12:14:04