コピー/貼り付け用にテキストを選択できるラベルを作成したいと思います。これを行うために、読み取り専用のエントリを使用しようとしました。しかし、それらのテキスト値を初期化できないようです。ラベルはループ内で生成され、ラベルの数とその内容は不明です。ラベルを作成するためのコードは次のとおりです。
proc test_labels {} {
toplevel .labels
# Main Frame
frame .labels.main_frame -relief "groove" -bd 2
pack .labels.main_frame
set r 1
foreach t [list banana apple grapes orange lemon peach] {
set lbl [label .labels.main_frame.lbl_$r -text "fruit $r:"]
set lbl2 [label .labels.main_frame.val_$r -text $t]
grid $lbl -row $r -column 1 -sticky nse
grid $lbl2 -row $r -column 2 -sticky nsw
incr r
}
set ok_btn [button .labels.main_frame.ok_b -text "OK" -command {prop_menu_ok_button}]
grid $ok_btn -row [expr $r+2] -column 1 -columnspan 2 -sticky nsew
grab release .
grab set .labels
center_the_toplevel .labels
bind .labels <Key-Return> {test_labels_ok_button}
}
そして、それは休閑ウィンドウを作成します:
次に、その行を次の行に置き換えようとしset lbl2 [label .labels.main_frame.val_$r -text $t]
ます。
eval "set text_val_$r $t"
eval "set lbl2 [entry .labels.main_frame.val_$r -relief flat -state readonly -textvar text_val_$r]"
しかし、これは空の行を作成するだけです:
エントリウィジェットにデフォルト値を設定するにはどうすればよいですか?