Turtle graphics - How do I control when the window closes?
I have a small python script which draws some turtle graphics. When my script has finished running, the turtle screen automatically closes, so to be able to see the graphics for a while I have to use time.sleep(5)
at the end of the script to delay the closing.
Is there any way I can make this more dynamic, i.e. tell python that I want to control the closing of the window myself? I开发者_Go百科 don't mind if the script can't do anything else while waiting for my command, but I'd prefer if I didn't have to go to the console for a read()
or something. Ideally, the canvas should stay open even after the script finishes running, but I am OK with a solution that halts the script until I close the window that holds the canvas (or click the canvas, or whatever...).
How do I accomplish this?
Just use turtle.done()
or turtle.Screen().exitonclick()
as a last command of your turtle program.
import turtle
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
# etc.
turtle.getscreen()._root.mainloop() # <-- run the Tkinter main loop
(edit: turtle.done()
as suggested by hua below is less ugly.)
simply use the mainloop() function imported from turtle's module itself!.
import turtle
#Draw a square
for i in range(4):
turtle.forward(200)
turtle.left(90)
#calling for the mainloop()
turtle.mainloop()
Try adding input()
at the end of your code.
This waits for several clicks - and draws a spiral while you click - until it decides to exit on the last click:
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()
精彩评论