Ответ 1
просто используйте turtle.done()
или exitonclick()
в качестве последней команды вашей программы черепахи.
У меня есть маленький python script, который рисует черепаховую графику. Когда мой script завершит работу, экран черепахи автоматически закрывается, поэтому, чтобы увидеть графику какое-то время, я должен использовать time.sleep(5)
в конце script для задержки закрытия.
Есть ли способ сделать это более динамичным, т.е. сказать python, что я хочу сам контролировать закрытие окна? Я не возражаю, если script не может ничего сделать в ожидании моей команды, но я предпочел бы, если бы мне не пришлось идти на консоль для read()
или что-то в этом роде. В идеале, холст должен оставаться открытым даже после завершения script, но я в порядке с решением, которое останавливает script, пока я не закрою окно, которое удерживает холст (или щелкните холст, или что-то еще...).
Как это сделать?
просто используйте turtle.done()
или exitonclick()
в качестве последней команды вашей программы черепахи.
import turtle
turtle.forward(100)
turtle.left(90)
turtle.forward(100)
# etc.
turtle.getscreen()._root.mainloop() # <-- run the Tkinter main loop
(изменить: turtle.done()
, как было предложено хуа ниже ниже, менее уродливо.)
просто используйте функцию mainloop(), импортированную из самого модуля черепа!!
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()