Остановить черепаху-питон нажатием клавиши
Я пытаюсь заставить черепаху перестать двигаться вперед, когда нажимаю клавишу выхода. Когда я нажимаю escape, ничего не происходит! Кто-нибудь может сказать мне, почему? Решение было бы очень признательно.
import turtle
screen = turtle.Screen()
running = True
def stop():
running = False
print(running)
while running:
turtle.forward(1)
screen.onkey(stop, "Esc")
screen.listen()
1 ответ
Я вижу несколько проблем с вашим кодом. Первичный - отсутствуетglobal
заявление в stop()
. К второстепенным относятся: смешивание функций черепахи и объектных API; использование имени клавиши "Esc" вместо "Escape"; положитьonkey()
а также listen()
в петле; и потенциально блокируя события с вашимwhile
петля.
Я считаю, что этот код должен делать то, что вы хотите:
from turtle import Screen, Turtle
running = True
def stop():
global running
running = False
def run():
if running:
turtle.forward(1)
screen.ontimer(run)
screen = Screen()
screen.onkey(stop, 'Escape')
screen.listen()
turtle = Turtle()
run()
screen.mainloop()