tkinter optionmenu 不显示选择的结果

tkinker optionmenu not showing chosen result

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))

这是从一段较大的代码中提取的,并抛出了同样的错误

您应该设置您的 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(至少在此代码中不需要),因为它会遍历项目本身。