Уроки Tk
#05: Ввод текста - entry |
Для ввода однострочного текста используется виджет entry. В отличие от стандартных элементов интерфейса в большинстве операционных систем, в Tk предоставлены удобные средства для управления, получения значений и контроля ввода текста.
Значение entry может связываться с переменной. Можно задать когда и какие процедуры будут вызываться при проверке введенного значения. Если могут вводиться длинные строки, то можно связать entry с scrollbar для горизонтальной прокрутки.
Использовать entry достаточно просто, но следует обратить внимание на проверку значений, посмотрите пример.
Стандартные опции для entry:
Специфичные для entry опции:
| -disabledbackground | |
| Эта опция определяет цвет фона, которым будет изображаться виджет в отключенном состоянии. | |
| -disabledforeground | |
| Определяет цвет, которым будет изображаться виджет в отключенном состоянии. | |
| -invalidcommand | |
| Определяет команду, которая будет выполняться когда validatecommand (команда проверки введенного значения) возвращает 0. Пустая строка {} отключает эту опцию. Лучше всего для этой опции установить значение bell (звуковой сигнал). | |
| -readonlybackground | |
| Задаёт цвет фона для entry, если текст доступен только для чтения. | |
| -show | |
| Если эта опция задана, то вместо введенного текста будет отбражен заданный символ. Например, можно задать значение "*". | |
| -state | |
| Задаёт одно из трёх состояний: normal (нормально), disabled (отключено), readonly (только для чтения). | |
| -validate | |
| Задаёт режим проверки значения. Возможные значения: none (нет проверки), focus, focusin (при установке фокуса), focusout (при потере фокуса), key (при нажатии кнопки) или all (при всех событиях). По умолчанияю - none. | |
| -validatecommand или -vcmd | |
| Задаёт команду, которая будет выполняться при проверке введенных значений. Если скрипт возвратит значение 0, то будет вызвана команда, заданная в -invalidcommand. | |
| -width | |
| Задаёт целое значение, высоты для entry. Если значение меньше или равно нулю, то высота будет зависить от содержимого. | |
Выполните пример и переходите к следующему упражнению.
# Эта программа проверяет введенное значение
proc Letter {text} {
if {[regexp {[^a-za-я]} $text]} {
.a configure -bg red
return 0
} else {
.a configure -bg white
return 1
}
}
label .la -text {Маленькие буквы:}
entry .a -bg white -textvariable a \
-invcmd bell -validate all -vcmd {Letter %P}
pack .la .a -fill x
proc Digit {text} {
if {[regexp {[^0-9]} $text]} {
.d configure -bg red
return 0
} else {
.d configure -bg white
return 1
}
}
label .ld -text {Цифры:}
entry .d -bg white -textvariable d \
-invcmd bell -validate all -vcmd {Digit %P}
pack .ld .d -fill x
|
| Горбачев "Yurez" Юрий |