2011-06-04 25 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