Python Turtle graphics-comment contrôler la fermeture de la fenêtre?

j'ai un petit script python qui dessine des graphismes de tortue. Quand mon script a fini de tourner, l'écran de la tortue se ferme automatiquement, donc pour pouvoir voir les graphiques pendant un certain temps je dois utiliser time.sleep(5) à la fin du script pour retarder la clôture.

y a-t-il un moyen de rendre cela plus dynamique, c'est-à-dire de dire à python que je veux contrôler la fermeture de la fenêtre moi-même? Ça ne me dérange pas si le script ne peut rien faire d'autre en attendant mes ordres, mais je préférerais si je n'avais pas à aller à la console pour un read() ou quelque chose. Idéalement, la toile devrait rester ouverte même après la fin du script, mais je suis D'accord avec une solution qui arrête le script jusqu'à ce que je ferme la fenêtre qui tient la toile (ou cliquez sur la toile, ou n'importe quoi d'autre...).

Comment puis-je accomplir cela?

19
demandé sur unor 2011-06-04 08:59:29

5 réponses

utiliser done() ou exitonclick() une dernière commande de votre tortue programme.

38
répondu hua 2012-07-17 12:25:43
import turtle

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

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

(edit:turtle.done() comme suggéré par hua ci-dessous est moins moche.)

18
répondu PAG 2013-10-03 10:19:03

il suffit d'utiliser la fonction mainloop () importée du module de turtle lui-même!.

import turtle


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


#calling for the mainloop()
turtle.mainloop()
8
répondu XGuru 2012-04-26 14:32:44

Essayez d'ajouter input() à la fin de votre code.

-2
répondu ddop 2012-01-23 07:33:00

C'attend quelques clics - et dessine une spirale pendant que vous cliquez sur - jusqu'à ce qu'il décide de sortir sur le dernier clic:

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()
-3
répondu Xaxxon 2014-06-01 14:04:13