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

时间:2017-02-22 14:14:14

标签: tcl tk

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

#!/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启动

GUI Start

选择“A”

Selecting A

该条目仍为空!

再次选择“A”

SElecting A again

此时条目已更新

选择“B”

enter image description here

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

再次选择“B”

enter image description here

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

1 个答案:

答案 0 :(得分:2)

只需绑定<<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行中的$tech必须是ttk::combobox