代码:
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一个星期左右,所以它可能很草率。我确定可能有更好的方法来做这个和不同的方法。
答案 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)