簡體   English   中英

TKinter:迭代時條目未使用正確的文本變量

[英]TKinter: Entry not using correct textvariable when iterating

我有一個循環,它構造了多組條目,旁邊有按鈕,所以:

set 0: [Item0 Entry] [Item0 Edit Button]
.
.
.
set 1: [Item0 Entry] [Item0 Edit Button]
etc

在每次迭代中,我創建一個變量

Item0Var = StringVar()

然后我通過說初始化

Item0Var.set("None")

我將變量存儲在外部字典中

self.CurrentEquipSets[set_num].update(
            {"Item0" : Item0Var,...} )

然后該變量顯示在禁用的條目中

Item0Entry = Entry(self.Item0Frame,textvariable=self.CurrentEquipSets[set_num]["Item0"],state=DISABLED,width=EntryWidth)

按鈕是

Item0Edit = Button(self.Item0Frame,text="Edit",command = lambda EquipSet=set_num,Item="Item0": self.EditItem(EquipSet,Item))

文本變量外部存儲在字典 self.CurrentEquipSets

按鈕調用

def EditItem(self,EquipSet,Item):
    self.CurrentEquipSets[EquipSet][Item].set("Something")

如果我有 3 組,我正在尋找的結果是:按下 set 0 的 Edit 按鈕:

set 0: Item0Entry ["Something"]
set 1: Item0Entry ["None"] 
set 3: Item0Entry ["None"]

但相反我得到

set 0: Item0Entry ["None"]
set 1: Item0Entry ["None"] 
set 3: Item0Entry ["Something"]

我錯過了什么?

原來 [{}]*listlength 不適用於啟動字典列表,問題解決了!

暫無
暫無

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

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