una turtle texto hacer examples estrella documentacion dibujos dibujar con como circulo python turtle-graphics window-management

texto - turtle python 3



Gráficos de Python Turtle: ¿cómo puedo controlar cuándo se cierra la ventana? (5)

Esto espera varios clics, y dibuja una espiral mientras haces clic, hasta que decide salir en el último 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()

Tengo un pequeño script en python que dibuja algunos gráficos de tortuga. Cuando mi script ha terminado de ejecutarse, la pantalla de la tortuga se cierra automáticamente, así que para poder ver los gráficos por un tiempo, tengo que usar time.sleep(5) al final del script para retrasar el cierre.

¿Hay alguna manera de hacer que esto sea más dinámico, es decir, decirle a python que quiero controlar el cierre de la ventana yo mismo? No me importa si el script no puede hacer otra cosa mientras espero mi comando, pero preferiría no tener que ir a la consola para read() o algo así. Idealmente, el lienzo debería permanecer abierto incluso después de que el script termine de ejecutarse, pero estoy de acuerdo con una solución que detiene el script hasta que cierre la ventana que contiene el lienzo (o haga clic en el lienzo, o lo que sea ...).

¿Cómo logro esto?


Intente agregar input() al final de su código.


simplemente use done() o exitonclick() como último comando de su programa de tortuga.


simplemente use la función mainloop () importada desde el propio módulo de turtle !.

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


import turtle turtle.forward(100) turtle.left(90) turtle.forward(100) # etc. turtle.getscreen()._root.mainloop() # <-- run the Tkinter main loop

(Editar: turtle.done() como lo sugiere hua a continuación es menos feo.)