【问题标题】:entry: displayed text updated only on second loop条目:显示的文本仅在第二个循环时更新
【发布时间】:2017-02-23 15:23:33
【问题描述】:

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

#!/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} 
        }
    }
}

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

例子:

界面启动

选择“A”

条目还是空的!

再次选择“A”

本次条目已更新

选择“B”

输入字符串仍未更新为“4 5 6”

再次选择“B”

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

【问题讨论】:

    标签: tcl tk


    【解决方案1】:

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

    #!/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} 
            }
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2021-12-04
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2013-11-15
      • 2016-09-28
      相关资源
      最近更新 更多