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