【发布时间】:2020-06-06 08:22:25
【问题描述】:
我被卡住了
我正在使用 refresh() 函数更改 OptionMenu 的内容,它在情况 A 中工作正常,但在情况 B 中我将其更改为回调时,OptionMenu 停止工作。点击一个选项不再选择它。
知道是什么原因吗?
案例A:
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()
案例 B:
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))
【问题讨论】:
-
@stovfl 希望您对此满意
-
应该阅读
command=tk._setit(cvar, content, doNothing))和def doNothing(event):
标签: python python-3.x tkinter optionmenu tkinter.optionmenu