2017-03-29 55 views
1

此刻每個選項菜單框都會替換上一個選項框,因此如果寫入ent1.get()我沒有在任何框中獲取值,我怎樣才能區分每個選項菜單並因此檢索每個價值明顯?理想的情況下,他們全部通過不同的名稱來決定他們在網格中的位置。如何在for循環中命名選項菜單框

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) 

回答

0

不知道如果我理解正確的,但如果你想在一個循環來創建不同的STRINGVAR的,你可以使用variable.format()方法,以確保每個StringVar保存爲一個唯一的變量。

因此下面的循環將創建STRINGVAR的被保存到變量ent1ent2ent3等,這將讓你以後分別打電話給他們..

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