Уроки Tk

Начало Уроки Tk Файлы
Статьи Уроки Tcl Гостевая книга
Предыдущий урок - #04: Кнопка - button

#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

Следующий урок - #06: Расположение виджетов - pack
Горбачев "Yurez" Юрий  
Хостинг от uCoz