条目:显示的文本仅在第二个循环中更新

entry: displayed text updated only on second loop

我正在尝试编写更新条目中显示的预定义字符串的过程。

#!/bin/env wish

set tech {A B}
set rules {}

frame .t
ttk::combobox .t.maps -textvariable rules -state readonly -values $tech 
entry .t.e -textvariable base_list 

pack .t .t.maps .t.e 

bind .t.maps <Button-1> {
    switch -- $rules {
        "A" { 
            set base_list {1 2 3}
        }
        "B" { 
            set base_list {4 5 6} 
        }
    }
}

条目中的字符串仅在第二个组合框值选择时更新的问题。

示例:

GUI 启动

选择"A"

条目还是空的!

再次选择 "A"

本次条目已更新

选择"B"

条目字符串仍未更新为“4 5 6”

再次选择"B"

如何修改我的代码以在第一个组合框值选择时更新条目?

只需绑定 <<ComboboxSelected>> 事件而不是 <Button-1>。不错的副作用:当用户通过键盘选择组合框项目时也会调用绑定。

#!/bin/env wish

set tech {A B}
set rules {}

frame .t
ttk::combobox .t.maps -textvariable rules -state readonly -values $tech 
entry .t.e -textvariable base_list 

pack .t .t.maps .t.e 

bind .t.maps <<ComboboxSelected>> {
    switch -- $rules {
        "A" { 
            set base_list {1 2 3}
        }
        "B" { 
            set base_list {4 5 6} 
        }
    }
}

顺便说一句:您的示例中有一个拼写错误:tech 必须是 ttk::combobox 行中的 $tech