Исключение команды Tkinter OptionMenu

Я хочу создать ткинтер OptionMenu это редактирует другой OptionMenu когда это изменилось. Поэтому я попытался создать command= аргумент, который заставляет определенную команду выполняться при каждом обновлении OptionMenuкак и когда я использую command= аргумент для кнопки, спинбокса и т. д.

tl.wktype = OptionMenu(tl,wktypevar, *wk_types,command=typeupdate)

Где-то еще в коде typeupdate() Команда - в целях отладки прямо сейчас.

def typeupdate():
    typeval = tl.wktype.get()
    print(typeval)

Исключение бросает питон следующее:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1475, in __call__
    return self.func(*args)
  File "C:\Python33\lib\tkinter\__init__.py", line 3300, in __call__
    self.__callback(self.__value, *args)
TypeError: typeupdate() takes 0 positional arguments but 1 was given

Какие позиционные аргументы делают typeupdate() думаю дано и как мне это исправить?

1 ответ

Решение

Ему дается значение, по которому щелкают. Чтобы продемонстрировать, рассмотрим этот скрипт:

from tkinter import Tk, OptionMenu, StringVar
root = Tk()
def func(val):
    print(val)
var = StringVar()
OptionMenu(root, var, "one", command=func).grid()
root.mainloop()

При запуске (и когда я нажимаю на опцию "один" в меню опций), он печатает "один" в терминале.

Итак, в итоге добавим val (или любое другое имя аргумента) к объявлению вашей функции, и оно будет работать:

def typeupdate(val):
Другие вопросы по тегам