import tkinter
window = tkinter.Tk()
def abc(event):
ans=0
numberss=['7','8','9']
omenu2['menu'].delete(0, 'end')
for number in numberss:
omenu2['menu'].add_command(label=numberss[ans], command=efg)
ans=ans+1
def efg(event=None):
print('yee')
numbers = ['1','2', '3']
number=['4','5','6']
var = tkinter.StringVar(window)
var1 = tkinter.StringVar(window)
omenu = tkinter.OptionMenu(window, var, *numbers, command = abc)
omenu.grid(row=1)
omenu2 = tkinter.OptionMenu(window, var1, *number, command = efg)
omenu2.grid(row=2)
输入第一个选项菜单后,它将更新第二个选项菜单。当您将数据输入第二个数据时,它会运行命令,但不会显示您输入的内容。我不想包含一个按钮,我知道该命令有效,而不是第二个
我发现一些代码改变了第二个菜单的选项,但是当我运行它时,命令不会工作,因为它被改为tkinter.setit(我也想知道它是做什么的。)目前不了解它)
omenu2['menu'].add_command(label=numberss[ans], command=tkinter._setit(var1, number))
这是从更大的代码中获取的,并且抛出了相同的错误
答案 0 :(得分:1)
您应该设置StringVar(var1
)新值。
def abc(event):
numberss=['7','8','9']
omenu2['menu'].delete(0, 'end')
for number in numberss:
omenu2['menu'].add_command(label=number, command=lambda val=number: efg(val))
def efg(val, event=None):
print('yee')
var1.set(val)
您正在使用for循环,因此您不需要ans
(至少不在此代码中),因为它会迭代项本身。