Исключение команды 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):