簡體   English   中英

如何在循環內將textvariable分配給不同的變量名-Python-Tkinter

[英]How to assign textvariable to different variable names within a loop - Python - Tkinter

碼:

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 ,我都需要它們內部的值(這就是為什么我將text variable選項作為參數的一部分的原因)-問題是我不知道如何為它使用不同的變量每個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個Spinbox,現在我想檢索Spinbox中的數字(無論是存儲在3個不同的變量中還是在列表中) / dictionary / array):

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一周左右,所以它可能很草率。 我確信可能有更好的方法可以做到這一點,也可以有不同的方法。

您無需為每個變量命名。 只需使用一個列表:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM