Остановить черепаху-питон нажатием клавиши

Я пытаюсь заставить черепаху перестать двигаться вперед, когда нажимаю клавишу выхода. Когда я нажимаю 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()
Другие вопросы по тегам