Python Turtle graphics-как управлять, когда окно закрывается?
у меня есть небольшой скрипт python, который рисует некоторые черепашьи графики. Когда мой скрипт закончит работу, экран черепахи автоматически закроется, поэтому, чтобы увидеть графику на некоторое время, я должен использовать time.sleep(5)
в конце скрипта отложить закрытие.
есть ли способ сделать это более динамичным, то есть сказать python, что я хочу сам контролировать закрытие окна? Я не возражаю, если сценарий не может сделать ничего другого, ожидая моей команды, но я бы предпочитаю, если бы мне не пришлось идти к консоли для read()
или что-то в этом роде. В идеале холст должен оставаться открытым даже после завершения работы скрипта, но я в порядке с решением, которое останавливает сценарий, пока я не закрою окно, в котором находится холст (или щелкните холст или что-то еще...).
Как мне это сделать?
5 ответов
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()
это ждет несколько кликов - и рисует спираль во время щелчка-пока он не решит выйти на последний клик:
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()