2011-06-04 17 views
19

Bazı kaplumbağa grafiklerini çizen küçük bir python betiğim var. Scriptimin çalışması bittiğinde, kaplumbağa ekranı otomatik olarak kapanır, böylece bir süreliğine grafikleri görebilmek için, kapanmayı geciktirmek için komut dosyasının sonunda time.sleep(5) kullanmam gerekir.Python Kaplumbağa grafikleri - Pencere kapandığında nasıl kontrol ederim?

Bunu daha dinamik hale getirmenin bir yolu var mı, python'a pencerenin kapanışını kendim kontrol etmek istediğimi söyle. Komutu beklerken komut dosyası başka bir şey yapamazsa sorun değil, ama read() ya da bir şey için konsola gitmem gerekmediğimi tercih ederim. İdeal olarak, betik çalışmayı bitirdikten sonra bile tuvalin açık kalması gerekir, ancak ben tuvali tutan pencereyi kapatana kadar (ya da tuvali tıklatırsanız ... ya da ...) komut dosyasını durduran bir çözümle tamamım.

Bunu nasıl yapabilirim?

+0

piton -i script.py terminali – Squirrl

cevap

35

sadece kaplumbağa programının son komutu olarak done() veya exitonclick() kullanın.

+1

'exitonclick' tanımlı değil. 'win = turtle.Screen(); win.exitonclick() ' –

+0

özellik 'Screen'. need win = turtle.getscreen() ' –

16
import turtle 

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

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

(düzenleme:. Hua önerdiği gibi aşağıda daha az çirkin turtle.done())

+0

Mükemmel çalışır! Komut pencereyi kapatana kadar durur ve devam eder. –

+1

getscreen() ._ root bölümüne mi ihtiyacınız var? turtle.mainloop() iyi çalışır (Python 3'te) ... – palsch

-1

deneyin senin kodun sonuna input() ekledi.

8

sadece kaplumbağanın modülünden alınan mainloop() işlevini kullanın.

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' nesnesinin 'mainloop' özelliği yoktur [PAG'ın cevabı] (http://stackoverflow.com/a/6240234/4794) iyi çalışmak. –

-3

Bu birkaç tıklama bekler - ve tıklarken bir spiral çizer - bu son tıklamada çıkmak için karar verene kadar:

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

Hayır değil:' AttributeError: '_Screen' nesnesinin 'mainloop' özelliği yoktur – SiHa