在python中的for循环中声明可调用变量

在python中的for循环中声明可调用变量,python,variables,loops,Python,Variables,Loops,我的python代码有问题。我正在使用tkinter用python编写一个GUI,它显示几个块,大约有10行,每行有4个单选按钮、一个输入字段和一个刻度。代码如下 for r,v,mi,ma,i in zip(self.radiobuttonShapes, self.valueShapes, self.minShapes, self.maxShapes, range(1,10)): ttk.Label(self.Shape, text="Shape " + str(i))

我的python代码有问题。我正在使用tkinter用python编写一个GUI,它显示几个块,大约有10行,每行有4个单选按钮、一个输入字段和一个刻度。代码如下

    for r,v,mi,ma,i in zip(self.radiobuttonShapes, self.valueShapes, self.minShapes, self.maxShapes, range(1,10)):
        ttk.Label(self.Shape, text="Shape " + str(i)).grid(column=0, row=i)
        ttk.Radiobutton(self.Shape, text="Off", variable=r, value=1, command=self.resetAllRadiosShape).grid(column=1, row=i)
        ttk.Radiobutton(self.Shape, text="Max", variable=r, value=2, command=self.resetAllRadiosShape).grid(column=2, row=i)
        ttk.Radiobutton(self.Shape, text="Min", variable=r, value=3, command=self.resetAllRadiosShape).grid(column=3, row=i)
        ttk.Radiobutton(self.Shape, text="Approx", variable=r, value=4, command=self.resetAllRadiosShape).grid(column=4, row=i)
        ttk.Entry(self.Shape, textvariable=v).grid(column=5, row=i)
        ttk.Scale(self.Shape, from_=mi, to=ma, variable=v).grid(column=6, row=i)
这基本上很好用。 当我想添加一个标签以将其全部放入并用另一行(包括和输入字段)和比例扩展该标签以与“近似”选项一起使用时,就会出现问题

我的问题在于不能动态地创建变量,并且不能在事后通过它们的方法访问它们

可能不太清楚,但我认为下面的伪代码更容易理解。我希望能够使其部分处于非活动状态(未选择“近似”时的“近似”字段)

为此,您应该使用,而不是动态变量名,设置代码如下所示:

def __init__(self):
    self.outerLabels = {}
    self.upperLabels = {}
    # whatever else is currently in __init__()
无论代码来自何处,您的问题:

for i in range(1, 10):
    self.outerLabels[i] = ttk.Label(self.Shape).grid(row=i)
    self.upperLabels[i] = ttk.Label(self.outerLabels[i]).grid(row=0)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=0)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=1)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=2)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=3)
    ttk.Entry(self.upperLabels[i]).grid(column=4)
    ttk.Scale(self.upperLabels[i]).grid(column=5)
    self.lowerLabels[i] = ttk.Label(self.outerLabels[i]).grid(row=1)
    ttk.Entry(self.lowerLabels[i]).grid(column=0)
    ttk.Scale(self.lowerLabels[i]).grid(column=1)
    self.lowerLabels[i].configure(state=DISABLED)

我尝试使用dict,但python告诉我我不能在dict中存储可调用变量。@wadum-你能把你看到的错误添加到你的问题中吗?您应该能够将函数和可调用类作为dict值,尽管可能不是作为dict键。@F.J很抱歉,一定是写错了什么,现在可以了:)谢谢!
for i in range(1, 10):
    self.outerLabels[i] = ttk.Label(self.Shape).grid(row=i)
    self.upperLabels[i] = ttk.Label(self.outerLabels[i]).grid(row=0)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=0)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=1)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=2)
    ttk.Radiobutton(self.upperLabels[i]).grid(column=3)
    ttk.Entry(self.upperLabels[i]).grid(column=4)
    ttk.Scale(self.upperLabels[i]).grid(column=5)
    self.lowerLabels[i] = ttk.Label(self.outerLabels[i]).grid(row=1)
    ttk.Entry(self.lowerLabels[i]).grid(column=0)
    ttk.Scale(self.lowerLabels[i]).grid(column=1)
    self.lowerLabels[i].configure(state=DISABLED)