使用在for(tkinter python)中创建的StringVar显示多个组合框的默认值

我想从对象列表(infos)中创建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, column=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, column=0, sticky="news")
        combo.columnconfigure(0, weight=1)
        combo.rowconfigure(0, weight=1)

        counter = counter + 1

由于对StringVar使用相同的变量varCombo,因此只有StringVar的最后一个实例引用了它,其他实例将被垃圾收集

如果您想稍后访问这些StringVar,最好使用字典来存储它们:

varCombo = {}
counter = 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, column=0, sticky="news")
    label.columnconfigure(0,weight=1)

    var1 = StringVar(window)
    var1.set(i.default)

    combo = ttk.Combobox(frame, state="readonly", textvariable=var1, values=i.values)
    combo.grid(row=1, column=0, sticky="news")
    combo.columnconfigure(0, weight=1)
    combo.rowconfigure(0, weight=1)
    varCombo[i.name] = var1

    counter = counter + 1

combo=ttk.Combobox(frame,state=“readonly”,textvariable=varCombo,values=i.values)

每次循环运行时,一个新的combobox被分配给变量combo,但combobox的最终值是在最后一次迭代中设置的,因此,只反映最后一个值。您可以使用一个类来解决这个问题。 请查看以下链接:

Set a default value for a ttk Combobox

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇