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