使用for循环在Tkinter中创建和使用小部件(Scale)

时间:2015-03-31 11:42:14

标签: python tkinter

我目前面临在Tkinter中创建许多(超过20个)刻度的问题,当然我不想创建和使用它们"手动"。
创作很好:

for ii in range(0,25):
  nam='input_a' + str(ii)
  nam = Scale(master, from_=100, to=0, orient=VERTICAL)
  nam.grid(row=0, column=2+ii)

当我想要获取值时出现问题:

import numpy as np

def Aux():
  a=np.zeros(25)
  for ii in range(0,25):
    nam='input_a'+str(ii)
    a[ii]=nam.get()
  return a

问题:nam仍然是一个str-object,因此它没有属性get

任何提示?谢谢!

2 个答案:

答案 0 :(得分:1)

将对Scales的引用保存在列表中

nam = []
for ii in range(0,25):
  nam.append(Scale(master, from_=100, to=0, orient=VERTICAL))
  nam[-1].grid(row=0, column=2+ii)

然后,您可以使用nam[ii].get()

答案 1 :(得分:1)

我发现字典对于存储小部件非常方便,但如果你只想通过整数索引访问它们,列表也会很好用:

scales = {}
for ii in range(0,25):
    scales[ii] = Scale(...)