Пример программы
ПРИМЕР НАПИСАНИЯ ПРОГРАММЫ, РЕАЛИЗУЮЩУЮ ЭКРАННУЮ ФОРМУ ВВОДА ЛИЧНОЙ КАРТОЧКИ
В качестве примера рассмотрим программу, реализующую экранную форму ввода личной карточки.
Текст программы:
set var1 ""
set var2 ""
set var3 ""
set var4 ""
set var5 ""
proc showValue {} {
puts "Переменная var1 = $var1"
puts "Переменная var2 = $var2"
puts "Переменная var3 = $var3"
puts "Переменная var4 = $var4"
puts "Переменная var5 = $var5"
}
label .msg -font fixed -justify left -text "Test window."
pack .msg -side top
frame .buttons
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
foreach i {var1 var2 var3 var4 var5} {
entry .$i.entry -relief sunken -width 40 -textvariable $i
label .$i.label
pack .$i.entry -side right
pack .$i.label -side left
}
.var2.label config -text Address:
.var5.label config -text Phone:
pack .msg .var1 .var2 .var3 .var4 .var5 -side top -fill x
focus .var1.entry
В этом примере формы ввода личной карточки значения введенных полей записываются в переменные var1 var2 var3 var4 var5.
Теперь рассмотрим текст по строкам
В начале программы объявляем глобальные переменные и присваиваем им начальные значения:
set var1 ""
set var2 ""
set var3 ""
set var4 ""
set var5 ""
proc showValue {} {
В начале процедуры объявляем глобальные переменные, которые будем использовать
global var1 var2 var3 var4 var5
Затем распечатываем их
puts "Переменная var2 = $var2"
puts "Переменная var3 = $var3"
puts "Переменная var4 = $var4"
puts "Переменная var5 = $var5"
}
Кроме того, здесь же определяем шрифтом
подписи, выравнивание и собственно текст
Командой frame создаем область
для расположения в ней кнопок управления с именем .buttons. Как видно
из имени, эта область принадлежит главному окну
button .buttons.code -text "Значения" -command "showValue"
pack .buttons.dismiss .buttons.code -side left -expand 1
При нажатии кнопки .buttons.dismiss мы предписываем выполнить команду exit, что приведет к завершения программы. При нажатии кнопки .buttons.code мы предписываем выполнить процедуру с именем showValue, которая будет описана ниже.
Теперь создадим 5 полей ввода для переменных var1, var2, var3, var4 и var5. Каждое поле ввода состоит из области (frame), в которой находится поле ввода и подпись. При создании поля ввода ( команда entry ) используется опция relief для придания рельефа области ввода, а также задается размер в символах.
foreach i { var1 var2 var3 var4 var5} {
entry .$i.entry -relief sunken -width 40
entry .$i.entry -relief sunken -width 40 -textvariable $i
Опция -textvariable указывает,
что значение поля ввода берется и будет записано в переменной с именем
$i.
pack .$i.entry -side right
pack .$i.label -side left
}
Здесь .$i.label : .$i. - родительский
объект, label - имя объекта. Имя родительского объекта в цикле будет находиться
из подстановки значения $i, и будет принимать значения:
. var1.---, . var2.---, . var3.---, . var4.--- и . var5.---.
Подписи располагаются слева, а поля ввода справа.
Подписи для полей ввода определяются с помощью команды конфигурирования config.
.var1.label config -text Name:
.var2.label config -text Address:
.var5.label config -text Phone:
Расположим созданные поля ввода в главном окне в следующем порядке.
pack .msg .var1 .var2 .var3 .var4 .var5 -side top -fill x
Фокус ввода переместим в первое поле ввода.
focus .var1.entry
Далее определим процедуру showValue,
которая в нашем случае распечатывает значения, которые были набраны оператором
в полях ввода.
foreach i {f1 f2 f3 f4 f5} {
}
Все права защищены 1992-1999 DataX/FLORIN, Inc.