如何在for循环中命名optionmenu框

时间:2017-03-29 15:37:24

标签: python tkinter optionmenu

目前每个选项菜单框都替换了前一个选项菜单框,所以如果写入ent1.get()我没有得到任何框中的值,我怎样才能区分每个选项菜单之间,并因此清楚地检索每个值?理想情况下,通过不同的名称将它们全部调用,这取决于它们在网格中的位置。

  for x in range (xval):#creating the matrix
        for y in range (yval):
            variable = StringVar(root)
            ent1 = OptionMenu(root, variable, *inputvalues)#creating the dropdown menus
            ent1.config(width=3)
            ent1.grid(row=(y+1), column=x)

2 个答案:

答案 0 :(得分:0)

不确定我是否理解正确,但如果您尝试在单个循环中创建不同的StringVar,则可以使用variable.format()方法确保将每个StringVar保存为唯一变量。

因此,以下循环将创建保存在变量ent1ent2ent3等中的StringVar。这将允许您稍后单独调用它们。

for x in range (xval):#creating the matrix
        for y in range (yval):
            variable = StringVar(root)
            ent["ent{0}"].format(y+1) = OptionMenu(root, variable, *inputvalues)#creating the dropdown menus
            ent["ent{0}"].format(y+1).config(width=3)
            ent["ent{0}"].format(y+1).grid(row=(y+1), column=x)

答案 1 :(得分:0)

使用字典来跟踪小部件和变量。

entries = {}
vars = {}
for x in range (xval):#creating the matrix
    for y in range (yval):
        variable = StringVar(root)
        entry = OptionMenu(root, variable, *inputvalues)
        entry.config(width=3)
        entry.grid(row=(y+1), column=x)
        entries[(x,y)] = entry
        vars[(x,y)] = variable