Подтвердить что ты не робот

Черепаха графика - Как я могу контролировать, когда окно закрывается?

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

import turtle

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

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

(изменить: turtle.done(), как было предложено хуа ниже ниже, менее уродливо.)

Ответ 3

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

import turtle


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


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

Ответ 4

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

Ответ 5

Это ждет нескольких кликов - и рисует спираль, пока вы нажимаете - до тех пор, пока она не решит выйти с последнего клика:

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