如何解决显示在其中为tkinter python创建的StringVar的多个组合框的默认值
我想从对象(信息)列表中创建ComboBox。我在下面创建了程序。我的问题是显示组合框的默认值。我为此使用Stringvar。但是默认值仅显示在最后创建的组合框中。我认为是因为我的StringVar对于所有ComboBox都是唯一的,但我不知道如何解决该问题。我该怎么办?
计数器= 0
for i in infos:
frame = Frame(principalFrame,bd=1)
frame.grid(row=counter,column=0,pady=20)
frame.columnconfigure(0,weight=1)
label = Label(frame,text=i.name)
label.grid(row=0,sticky="news")
label.columnconfigure(0,weight=1)
varCombo = StringVar(window)
varCombo.set(i.default)
combo = ttk.Combobox(frame,state="readonly",textvariable=varCombo,values=i.values)
combo.grid(row=1,sticky="news")
combo.columnconfigure(0,weight=1)
combo.rowconfigure(0,weight=1)
counter = counter + 1
解决方法
combo = ttk.Combobox(frame,state =“ readonly”,textvariable = varCombo,values = i.values)
每次循环运行时,都会将新的组合框分配给变量组合,但是组合框的最终值是在上次迭代中设置的,因此仅反映了最后一个值。您可以使用一个类来解决此问题。 请检查以下链接:
Set a default value for a ttk Combobox
,由于您为['10.131.0.240/29-NameoftheNetwork=0','10.121.0.248/29-NameoftheNetwork2=0','10.111.2.248/29-NameoftheNetwork3=1']
使用了相同的变量varCombo
,因此只有StringVar
的最后一个实例对其进行了引用,其他变量将被垃圾回收。
如果您以后想访问那些StringVar
,最好使用字典来存储它们:
StringVar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。