Python turtle.onkey не запускает функцию

#python #python-3.x #python-turtle

#python #python-3.x #черепаха-графика #python-turtle

Вопрос:

Это мой код:

 import turtle

# window
wn = turtle.Screen()
wn.setup(width=800, height=600)
wn.tracer(0)


def hi():
    print("hi")

def bye():
    print("bye")


wn.listen()
wn.onkey(hi, "a")
wn.onkeyrelease(bye, "a")


while True:
    wn.update()
  

Когда я нажимаю клавишу, она не выводит «привет», но когда я отпускаю клавишу, она выводит «пока» просто отлично. Что я делаю не так?

Ответ №1:

onkey — это просто псевдоним для onkeyrelease

Вместо этого используйте onkeypress

 wn.onkeypress(hi, "a")
wn.onkeyrelease(bye, "a")
  

Комментарии:

1. Я не использую onkeypress, потому что, когда вы удерживаете клавишу нажатой, функция запускается повторно, но я хочу запустить ее только один раз. Это достижимо другим способом?

2. установите логический флаг при первом вызове. игнорируйте следующие вызовы, снимите флаг с keyrelease.