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?
5 réponses
utiliser done() ou exitonclick() une dernière commande de votre tortue programme.
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.)
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()
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()