【问题标题】:Creating and using widgets (Scale) in Tkinter using for-loop使用 for 循环在 Tkinter 中创建和使用小部件(缩放)
【发布时间】:2015-06-04 17:51:09
【问题描述】:

我目前面临在 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 对象,因此它不能有属性 get

有什么提示吗?谢谢!

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

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

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

    【讨论】:

    • 这是一个有趣的想法!我只需要整数引用,所以使用解决方案的列表对我来说更聪明,但我肯定会偶尔使用你的。
    【解决方案2】:

    将您的秤的引用保存在列表中

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多