如何将textvariable分配给循环中的不同变量名 - Python - Tkinter

时间:2015-05-19 13:46:05

标签: python tkinter tk

代码:

for i in range(len(self.models_chosen)):
    self.test.insert(i, vars())
    self.model_entry_dict_text["entry" + str(i)] = ttk.Label(
        self.entry_frame,
        text="Quantity of: " + self.models_chosen[i]
    )
    self.model_entry_dict_text["entry" + str(i)].pack(fill=X)
    self.model_entry_dict["entry" + str(i)] = Spinbox(self.entry_frame, from_=0, to=2000,)
    self.model_entry_dict["entry" + str(i)].pack(fill=X)
    self.models_entry_box_created = True
    self.old_models = self.models_chosen

我所做的是在for in range内写了一个字典 -

self.model_entry_dict["entry" + str(i)]

所以它会是:

self.model_entry_dict["entry1"] = Spinbox(self..) 
self.model_entry_dict["entry2"] = Spinbox(self..)
self.model_entry_dict["entry3"] = Spinbox(self..)  

...

取决于范围。

对于我创建的spinboxes中的每一个,我需要来自它们内部的值(这就是为什么我将文本变量选项作为参数的一部分) - 问题是我没有'知道如何为每个spinbox创建一个不同的变量,因为在循环中创建了spinboxes

假设我放self.textvariable,所有spinboxes都会有相同的值。我希望拥有的一个例子是

textvariable = self.variable+i

这样:

self.variable1 to be the text variable for self.model_entry_dict["entry1"]  
self.variable2 to be the text variable for self.model_entry_dict["entry2"]
... etc.

我刚刚做的事情:

self.variable1.get() - 它应该得到spinbox

中的数字

但我不认为可以在变量名中添加字符串/整数。

在这里你可以看到我在列表框中选择的模型的图像,然后按下更新按钮,它生成了3个旋转框,现在我想检索旋转框中的数字(是否存储到3个不同的变量或在列表/字典/数组中):

http://gyazo.com/a7c9847ec16b16fb443082066b42f890

我正在寻找的例子(使用上面提供的图片):

test1 = self.variable1.get()
print(test1)

    output:
        1800
test2 = self.variable2.get()
print(test2)

    output:
        300
test3 = self.variable3.get()
print(test3)

    output:
        30

对不起,如果这看起来有点混乱,我开始使用Python一个星期左右,所以它可能很草率。我确定可能有更好的方法来做这个和不同的方法。

1 个答案:

答案 0 :(得分:0)

您不需要为每个变量命名。只需使用清单:

self.vars = []
for i in range(len(self.models_chosen)):
    var = StringVar()
    self.vars.append(var)
    ...
    self.model_entry_dict["entry" + str(i)].config(textvariable=var)