Виртуальное событие ComboBox - PullRequest
0 голосов
/ 04 ноября 2019

всякий раз, когда я пытаюсь запустить функцию с помощью ComboBox, я должен включить аргумент, который я не использую в функции, чтобы она могла выполняться. Я попытался напечатать аргумент, и он показывает это «событие VirtualEvent x = 0 y = 0».

Я хочу, чтобы он мог работать без каких-либо аргументов, но будет отображаться эта ошибка:

TypeError: update_day () принимает 0 позиционных аргументов, но был задан 1.

Как удалить этот 1 позиционный аргумент?

def update_day():
some code to run.

trying=ttk.Combobox(popup, font=("times", 14), value=month_option, width=5, textvariable=var2, state="readonly")
trying.place(x=220, y=100)
trying.bind("<<ComboboxSelected>>", update_day)

1 Ответ

1 голос
/ 04 ноября 2019

Когда вы связываете функцию с событием, tkinter всегда передает объект в обратный вызов. Этот объект, по соглашению с именем event, описывает событие, которое вызвало обратный вызов.

Вы не можете запретить отправку параметра, хотя есть обходные пути. Самое простое - сделать параметр необязательным в определении вашей функции.

Например:

def update_day(event=None):
    some code to run

Вышеприведенное позволяет функции принимать переданный ей объект события, но также позволяет напрямую вызывать функцию без объекта события (например: update_day().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...