Рассмотрим следующую строку кода:
canvas.bind("w", ball_disappear())
Это имеет точно такой же эффект, как этот:
result = ball_disappear()
canvas.bind("w", result)
Когда вы связываете событие, вы должны дать ему вызываемая .Обычно это принимает форму ссылки на функцию, хотя это также может быть результатом вызова lambda
или functools.partial
или даже вашей собственной функции, если эта функция возвращает другую функцию.
Таким образомправильный способ связывания ball_disappear
выглядит следующим образом:
canvas.bind("w", ball_disappear)
Однако ваш код все равно не будет работать из-за двух других ошибок в вашем коде.
Во-первых,холст не получает события клавиатуры по умолчанию.Вы должны явно указать ей фокус клавиатуры, поэтому через некоторое время после создания холста вам необходимо сделать следующее:
canvas.focus_set()
Во-вторых, когда вы связываете функцию с событием, вызываемая функция будет переданаобъект, который имеет информацию о событии.Таким образом, вам нужно определить свою функцию следующим образом, даже если вы не планируете использовать параметр в своем коде:
def ball_disappear(event):