Как вы упомянули, возникает одна «ошибка»: изображение сразу переходит к изображению bg2
.Эта строка вызывает следующее:
nextbutton1=Button(window, image=nextbutton, bd=0, command=next1())
Более конкретно, где вы объявляете команду, связанную с кнопкой:
command=next1()
С помощью заключенных в скобки вы вызываете функцию next1
т. Е. Как только кнопка будет создана, запустите указанную функцию.
Чтобы решить эту проблему, просто удалите пару скобок:
nextbutton1=Button(window, image=nextbutton, bd=0, command=next1)
То же самое относится и к привязке вашего ключа.Таким образом, кнопка / клавиша теперь имеет ссылку на функцию - она знает, какую функцию запустить, и будет запускать ее при выполнении указанного действия.
Подробнее о привязке клавиш ... При использовании bind
для назначения клавиши для запуска функции, любая функция, которая должна быть запущена, должна быть осведомлена как таковая.В настоящее время функция next
, которую вы пытаетесь связать, не имеет указаний на то, что ее можно вызвать с помощью события кнопки клавиатуры.Чтобы исправить это, мы устанавливаем параметр по умолчанию в next
, определяя событие:
def next1(event=None):
#rest of function code here
window.bind('<Button-1>', lambda event: next(event))
Установка параметра по умолчанию, event=None
, в основном означает, что никакое значение для event
не было передано функции изчто бы он ни вызывал, установите его по умолчанию None
(в этом смысле вы можете выбрать его по умолчанию).Использование lambda
для привязки клавиш таким образом позволяет нам передавать параметры в функции.Мы указываем, какой параметр (параметры) мы хотим передать функции, а затем указываем функцию с параметрами, заключенными в квадратные скобки.