Команда "global y 2" объявляет 2 глобальные переменные с именами y и 2 соответственно (да, в Tcl 2 это совершенно корректное имя переменной).Ни одна из переменных еще не имеет значения.Возможно, вы намеревались:
global y
set y 2
Но это будет каждый раз сбрасывать переменную на 2.Таким образом, вы, вероятно, хотите что-то вроде:
set y 2
proc add_new_seq {} {
global y
rid .kl15_val -row $y -column 4
incr y
}
add_new_seq