2017-02-22 1 views
0

エントリに表示された定義済みの文字列を更新するプロシージャを作成しようとしています。エントリ:表示されたテキストは2番目のループでのみ更新されます

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

Selecting A

エントリ

GUI Start

の選択を開始するには、空のままです!

選択項目が "B"

enter image description here

まだ4 5」に更新されていないエントリ文字列を選択

を更新しました "" もう一度

SElecting A again

この時間6 "

再び「B」を選択する

enter image description here

どのように私は、エントリが最初のコンボボックスの値の選択に更新させるために私のコードを変更することができますか?

答えて

2

<Button-1>の代わりに<<ComboboxSelected>>イベントをバインドするだけです。ニースの副作用:ユーザーがキーボードでコンボボックス項目を選択すると、バインディングが呼び出されます。

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

はところで:あなたの例では、タイプミスがあります:techttk::comboboxラインで$techでなければなりません。

関連する問題