В этом примере формы ввода личной карточки значения введенных полей
записываются в переменные var1 var2 var3 var4 var5.
Теперь рассмотрим текст по строкам
В начале программы объявляем глобальные переменные и присваиваем им начальные
значения:
global var1 var2 var3 var4 var5 set var1 "" set var2 "" set
var3 "" set var4 "" set var5 ""Затем описываем процедуру, которая
будет вызываться при нажатии кнопки “Значения“ и выдавать на стандартное
устройство вывода значения наших переменных:
proc showValue {} {
В начале процедуры объявляем глобальные переменные, которые будем
использовать
global var1 var2 var3 var4 var5
Затем распечатываем их
puts "Переменная var1 = $var1" puts "Переменная var2 = $var2" puts
"Переменная var3 = $var3" puts "Переменная var4 = $var4" puts
"Переменная var5 = $var5" }Установим заголовок главного окна на строку
“Form“, используя команду управления менеджером окон WM wm title . "Form"Создадим подпись с именем .msg. Имя подписи состоит
из “точки“ и имени, где “точка“ - имя родительского объекта (главное окно), имя
- имя создаваемого объекта.
Кроме того, здесь же определяем шрифтом подписи, выравнивание и собственно
текст
label .msg -font fixed -justify left -text "Test window."Используя
команду pack, мы говорим интерпретатору, что объект с именем (в данном случае
это .msg) нужно расположить в верхней части родительского (главного) окна
(объекта) pack .msg -side top
Командой frame создаем область для расположения в ней кнопок управления с
именем .buttons. Как видно из имени, эта область принадлежит главному окну
frame .buttonsРасположение области .buttons задаем в нижней части
формы, причем эта область будет занимать по ширине все пространство
родительского окна. Опция “-pady 2m“ устанавливает отступ объектов по вертикали,
которые будут располагаться во внутренней части .buttons, равной 2 мм.
pack .buttons -side bottom -fill x -pady 2mТеперь создадим и
расположим в созданной области кнопки управления button .buttons.dismiss -text "Вход" -command "exit" button
.buttons.code -text "Значения" -command "showValue" pack .buttons.dismiss
.buttons.code -side left -expand 1Имена строятся по тому же принципу,
“.buttons.“ - родительское окно, “dismiss“ - имя объекта.
При нажатии кнопки .buttons.dismiss мы предписываем выполнить команду “exit“,
что приведет к завершения программы. При нажатии кнопки .buttons.code мы
предписываем выполнить процедуру с именем “showValue“, которая будет описана
ниже.
Теперь создадим 5 полей ввода для переменных var1, var2, var3, var4 и var5.
Каждое поле ввода состоит из области (frame), в которой находится поле ввода и
подпись. При создании поля ввода ( команда “entry“ ) используется опция “relief“
для придания рельефа области ввода, а также задается размер в символах.
Опция -textvariable указывает, что значение поля ввода берется и будет
записано в переменной с именем “$i“.
label .$i.label pack .$i.entry -side right pack .$i.label -side
left }
Здесь .$i.label : “.$i.“ - родительский объект, label - имя объекта. Имя
родительского объекта в цикле будет находиться из подстановки значения $i, и
будет принимать значения: