Утро всем,
В приведенном ниже коде показано пространство имен с процедурами, а также имеется массив с именем ds_out.
Если я запускаю этот код и нажимаю кнопку ввода, я получаю ошибку:
«Ошибка: невозможно прочитать» ds_out (0) !: нет такой переменной
Если я поставлю галочку и нажму Enter, появится сообщение:
«KL15 - это: 1», и если я сниму флажок, будет написано «KL15 - это: 0»
Если я закомментирую пространство имен и просто укажу процедуры, все будет работать нормально.
Может кто-нибудь сказать мне, почему, пожалуйста?
namespace eval RELAY_SELECT {
tk::labelframe .rs -text "Relay Selection"
array set ds_out {
0 0
1 0
}
proc create_RS_Labels {} {
tk::label .rs.kl15_lb -text "KL15" -justify center -width 5
}
proc create_RS_CBoxes {} {
tk::checkbutton .rs.kl15_cb -width 1 -height 1 -variable kl15_cb -command {if {$kl15_cb} {
set ds_out(0) 1
set ds_out(1) 1
} else {
set ds_out(0) 0
set ds_out(1) 0
} }
}
proc create_RS_enter_Button {} {
tk::button .rs.enter -borderwidth 1 -height 1 -text "Enter" -width 5 -command {if {$kl15_cb} {
set ds_out(0) 1
set ds_out(1) 1
puts "KL15 is: $ds_out(0)"
} else {
puts "KL15 is: $ds_out(0)"
set ds_out(0) 0
set ds_out(1) 0
}
}
}
proc create_RS_LabelFrame {} {
place .rs -x 10 -y 10
grid .rs.kl15_lb -row 0 -column 0
grid .rs.kl15_cb -row 0 -column 1
grid .rs.enter -row 12 -column 0 -columnspan 6
}
create_RS_Labels
create_RS_CBoxes
create_RS_enter_Button
create_RS_LabelFrame
}