Python Turtle graphics-как управлять, когда окно закрывается?

у меня есть небольшой скрипт python, который рисует некоторые черепашьи графики. Когда мой скрипт закончит работу, экран черепахи автоматически закроется, поэтому, чтобы увидеть графику на некоторое время, я должен использовать time.sleep(5) в конце скрипта отложить закрытие.

есть ли способ сделать это более динамичным, то есть сказать python, что я хочу сам контролировать закрытие окна? Я не возражаю, если сценарий не может сделать ничего другого, ожидая моей команды, но я бы предпочитаю, если бы мне не пришлось идти к консоли для read() или что-то в этом роде. В идеале холст должен оставаться открытым даже после завершения работы скрипта, но я в порядке с решением, которое останавливает сценарий, пока я не закрою окно, в котором находится холст (или щелкните холст или что-то еще...).

Как мне это сделать?

5 ответов


просто использовать done() или exitonclick() как последняя команда вашей программы turtle.


import turtle

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

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

(edit:turtle.done() как предложено hua ниже, менее уродливо.)


просто используйте функцию mainloop (), импортированную из самого модуля turtle!.

import turtle


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


#calling for the mainloop()
turtle.mainloop()

попробуйте добавить input() в конце вашего кода.


это ждет несколько кликов - и рисует спираль во время щелчка-пока он не решит выйти на последний клик:

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()