Уроки 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" Юрий |