访问在python tkinter中创建的选项菜单数组中的元素时出现问题

问题描述 投票:0回答:1

我根据用户输入在运行时创建了选项菜单。

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

这里选项菜单是动态创建的。但是当我更改选项菜单时,新值被追加不更新,因为我不知道如何找到点击了哪个选项菜单。

python tkinter
1个回答
0
投票

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):
© www.soinside.com 2019 - 2024. All rights reserved.