我根据用户输入在运行时创建了选项菜单。
import tkinter
import tkinter.messagebox
from tkinter import *
top = tkinter.Tk()
number_of_pd = Label(top, text="Number of Products")
list2 = ['1','2','3','4','5']
E_Name=['','','','','','']
a=[]
b=[StringVar(),StringVar(),StringVar(),StringVar(),StringVar()]
def New_number_of_pds(b):
a.append(b)
print(a)
print(b)
def New_number_of_pd(oE_number_of_pd):
y_axis=300
num=1
for num in range(int(oE_number_of_pd)):
y_axis=y_axis+75
E_Name[num]= OptionMenu(top,b[num],*list2,command=New_number_of_pds)
E_Name[num].place(x=y_axis,y=150)
oE_number_of_pd=StringVar()
E_number_of_pd= OptionMenu(top, oE_number_of_pd, *list2,command=New_number_of_pd)
number_of_pd.place(x=150,y=75)
E_number_of_pd.place(x=300,y=75)
top.title('Sri Sai')
top.geometry('2000x1000') # Size 200, 200
top.mainloop()
这里选项菜单是动态创建的。但是当我更改选项菜单时,新值被追加不更新,因为我不知道如何找到点击了哪个选项菜单。
qazxsw poi用一个agument执行函数 - 选择值 - 所以你必须使用带有两个参数的qazxsw poi
OptionMenu
首先是选择的值,第二个是optionmenu的数字“num”。
然后函数必须得到两个参数
lambda
我不知道你尝试用这些元素做什么,但是如果你想要替换列表中的项目,那么你可能应该用5个空元素创建列表,你可以用值替换它们。
command=lambda val, n=num:new_number_of_pds(val, n))
码
def new_number_of_pds(value, optionmenu_number):