Я застрял
Я изменяю содержимое OptionMenu с помощью функции refresh(), и она отлично работает в случае A, но когда в случае B, когда я меняю его на обратный вызов, OptionMenu перестает работать. Щелчок по параметру больше не выбирает его.
Любая идея, что делает это так?
Случай А:
import tkinter as tk
root = tk.Tk()
cvar = tk.StringVar(root)
cvar.set("-")
optionlist = ('one', 'two', 'three')
def refresh(contentlist):
optionmenu['menu'].delete(0, 'end')
for content in contentlist:
optionmenu['menu'].add_command(label=content, command=tk._setit(cvar, content))
def doNothing():
return
optionmenu = tk.OptionMenu(root, cvar, *optionlist, command=doNothing)
optionmenu.pack()
refresh(optionlist)
root.mainloop()
Случай Б:
def contentcallback(var, name):
tk._setit(var, name)
def refresh(contentlist):
optionmenu['menu'].delete(0, 'end')
for content in contentlist:
optionmenu['menu'].add_command(label=content, command=contentcallback(cvar, content))
cvar.get()
внутриdef callback(...
делает то же самое безlambda ...
06.06.2020