【问题标题】:TKinter: Entry not using correct textvariable when iteratingTKinter:迭代时条目未使用正确的文本变量
【发布时间】:2020-05-22 23:11:41
【问题描述】:

我有一个循环,它构造了多组条目,旁边有按钮,所以:

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

在每次迭代中我都会创建一个变量

Item0Var = StringVar()

然后我通过 say 进行初始化

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"]

我错过了什么?

【问题讨论】:

  • 请创建一个合适的minimal reproducible example。让我们弄清楚如何拼接所有这些小代码块并不是让人们回答的好方法。
  • 抱歉,代码相当多,但我想我可以更接近完整的代码!

标签: python loops tkinter


【解决方案1】:

原来 [{}]*listlength 对启动字典列表不起作用,问题解决了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2019-04-03
    • 2017-05-15
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 2013-01-15
    相关资源
    最近更新 更多