entry
-
НАЗВАНИЕ
- entry — Создание и управление виджетами однострочного текстового ввода 'entry'
- СИНТАКСИС
- СТАНДАРТНЫЕ ПАРАМЕТРЫ
-
-background или -bg, background, Фон
- -borderwidth или -bd, borderWidth, Ширина рамки
- -cursor, cursor, Указатель
- -exportselection, exportSelection, Экспорт выделения
- -font, font, Шрифт
- -foreground или -fg, foreground, Цвет текста
- -highlightbackground, highlightBackground, Фон выделения
- -highlightcolor, highlightColor, Цвет выделения
- -highlightthickness, highlightThickness, Толщина выделения
- -insertbackground, insertBackground, Цвет текста
- -insertborderwidth, insertBorderWidth, Ширина рамки
- -insertofftime, insertOffTime, Время выключения
- -insertontime, insertOnTime, Время включения
- -insertwidth, insertWidth, Ширина вставки
- -justify, justify, Выравнивание
- -relief, relief, Рельеф
- -selectbackground, selectBackground, Цвет текста
- -selectborderwidth, selectBorderWidth, Ширина рамки
- -selectforeground, selectForeground, Фон
- -takefocus, takeFocus, Получение фокуса
- -textvariable, textVariable, Переменная
- -xscrollcommand, xScrollCommand, Команда прокрутки
- -borderwidth или -bd, borderWidth, Ширина рамки
- ПАРАМЕТРЫ, СПЕЦИФИЧНЫЕ ДЛЯ ВИДЖЕТА
-
-disabledbackground, disabledBackground, Фон при отключении
- -disabledforeground, disabledForeground, Цвет текста при отключении
- -invalidcommand или -invcmd, invalidCommand, Команда недействительности
- -readonlybackground, readonlyBackground, Фон при чтении только
- -show, show, Отображение
- -state, state, Состояние
- -validate, validate, Валидация
- -validatecommand или -vcmd, validateCommand, Команда проверки
- -width, width, Ширина
- -disabledforeground, disabledForeground, Цвет текста при отключении
-
none
- focus
- focusin
- focusout
- key
- all
- focus
-
%d
- %i
- %P
- %s
- %S
- %v
- %V
- %W
- %i
-
число
- anchor
- end
- insert
- sel.first
- sel.last
- @число
- anchor
-
имя пути bbox индекс
- имя пути cget параметр
- имя пути configure ?параметр? ?значение параметр значение ...?
- имя пути delete начало ?конец?
- имя пути get
- имя пути icursor индекс
- имя пути index индекс
- имя пути insert индекс строка
- имя пути scan параметр аргументы
-
имя пути scan mark x
- имя пути scan dragto x
- имя пути selection параметр аргумент
-
имя пути selection adjust индекс
- имя пути selection clear
- имя пути selection from индекс
- имя пути selection present
- имя пути selection range начало конец
- имя пути selection to индекс
- имя пути selection clear
- имя пути validate
- имя пути xview аргументы
-
имя пути xview
- имя пути xview индекс
- имя пути xview moveto дробь
- имя пути xview scroll число что
- имя пути xview индекс
- имя пути cget параметр
Имя
entry — Создание и управление виджетами однострочного текстового ввода 'entry'Синтаксис
entryимя пути ?параметры?Стандартные параметры
-
-background или -bg, background, Фон
- -borderwidth или -bd, borderWidth, Ширина рамки
- -cursor, cursor, Указатель
- -exportselection, exportSelection, Экспорт выделения
- -font, font, Шрифт
- -foreground или -fg, foreground, Цвет текста
- -highlightbackground, highlightBackground, Фон выделения
- -highlightcolor, highlightColor, Цвет выделения
- -highlightthickness, highlightThickness, Толщина выделения
- -insertbackground, insertBackground, Цвет текста
- -insertborderwidth, insertBorderWidth, Ширина рамки
- -insertofftime, insertOffTime, Время выключения
- -insertontime, insertOnTime, Время включения
- -insertwidth, insertWidth, Ширина вставки
- -justify, justify, Выравнивание
- -relief, relief, Рельеф
- -selectbackground, selectBackground, Цвет текста
- -selectborderwidth, selectBorderWidth, Ширина рамки
- -selectforeground, selectForeground, Фон
- -takefocus, takeFocus, Получение фокуса
- -textvariable, textVariable, Переменная
- -xscrollcommand, xScrollCommand, Команда прокрутки
- -borderwidth или -bd, borderWidth, Ширина рамки
Параметры, специфичные для виджета
- Имя в командной строке: -disabledbackground
- Имя базы данных: disabledBackground
- Класс базы данных: DisabledBackground
- Имя базы данных: disabledBackground
- Указывает цвет фона, используемый при отключенном состоянии записи. Если этот параметр пустая строка, используется обычный цвет фона.
- Имя в командной строке: -disabledforeground
- Имя базы данных: disabledForeground
- Класс базы данных: DisabledForeground
- Имя базы данных: disabledForeground
- Указывает цвет переднего плана, используемый при отключенном состоянии записи. Если этот параметр пустая строка, используется обычный цвет переднего плана.
- Имя в командной строке: -invalidcommand or -invcmd
- Имя базы данных: invalidCommand
- Класс базы данных: InvalidCommand
- Имя базы данных: invalidCommand
- Указывает скрипт для вычисления, когда -validatecommand возвращает 0. Установка в {} отключает эту функцию (по умолчанию). Лучшее использование этого параметра — установить его в bell. Более подробная информация о валидации приведена ниже в разделе ВАЛИДАЦИЯ.
- Имя в командной строке: -readonlybackground
- Имя базы данных: readonlyBackground
- Класс базы данных: ReadonlyBackground
- Имя базы данных: readonlyBackground
- Указывает цвет фона, используемый при только для чтения записи. Если этот параметр пустая строка, используется обычный цвет фона.
- Имя в командной строке: -show
- Имя базы данных: show
- Класс базы данных: Show
- Имя базы данных: show
- Если этот параметр указан, то истинное содержимое записи не отображается в окне. Вместо этого каждый символ в значении записи будет отображаться как первый символ в значении этого параметра, например, «*». Это полезно, например, если запись предназначена для ввода пароля. Если символы в записи выбраны и скопированы в другое место, скопированная информация будет отображаться, а не истинное содержимое записи.
- Имя в командной строке: -state
- Имя базы данных: state
- Класс базы данных: State
- Имя базы данных: state
- Указывает одно из трех состояний для записи: normal, disabled или readonly. Если запись предназначена для только для чтения, то значение не может быть изменено с помощью команд виджета, и курсор вставки не будет отображаться, даже если фокус ввода находится в виджете; содержимое виджета всё же может быть выбрано. Если запись отключена, значение не может быть изменено, курсор вставки не отображается, содержимое не может быть выбрано, и запись может быть отображена в другом цвете в зависимости от значений параметров -disabledforeground и -disabledbackground.
- Имя в командной строке: -validate
- Имя базы данных: validate
- Класс базы данных: Validate
- Имя базы данных: validate
- Указывает режим работы валидации: none, focus, focusin, focusout, key или all. По умолчанию значение none. При необходимости валидации необходимо явно указать требуемый режим. Более подробная информация о валидации приведена ниже в разделе ВАЛИДАЦИЯ.
- Имя в командной строке: -validatecommand or -vcmd
- Имя базы данных: validateCommand
- Класс базы данных: ValidateCommand
- Имя базы данных: validateCommand
- Указывает скрипт для вычисления при необходимости валидации ввода в виджет записи. Установка в {} отключает эту функцию (по умолчанию). Эта команда должна возвращать действительное булево значение Tcl. Если возвращается 0 (или эквивалент действительного булева значения Tcl), это означает отклонение нового значения, и оно не будет применено, и если задан параметр -invalidcommand, будет выполнено вычисление с этим параметром. Если возвращается 1, то новое значение применяется. Более подробная информация о валидации приведена ниже в разделе ВАЛИДАЦИЯ.
- Имя в командной строке: -width
- Имя базы данных: width
- Класс базы данных: Width
- Имя базы данных: width
- Указывает целое числовое значение, определяющее желаемую ширину окна записи в средних размерах символов шрифта виджета. Если значение меньше или равно нулю, виджет выбирает размер, достаточный для размещения текущего текста.
Описание
Команда entry создает новое окно (определяемое аргументом pathName) и превращает его в виджет записи. Дополнительные параметры, описанные выше, можно указать в командной строке или в базе параметров для настройки аспектов записи, таких как цвета, шрифт и рельеф. Команда entry возвращает свой аргумент pathName. В момент вызова этой команды окно с именем pathName не должно существовать, но родительское окно pathName должно существовать.Виджет записи отображает строку текста одной строки и позволяет редактировать эту строку с помощью команд виджета, описанных ниже, которые обычно привязаны к нажатиям клавиш и действиям мыши. При первом создании строка записи пуста. Часть записи может быть выбрана, как описано ниже. Если запись экспортирует свой выбор (см. параметр -exportselection), она будет следовать стандартным протоколам X11 для обработки выбора; выборы записей доступны как тип STRING. Записи также следуют стандартным правилам Tk для работы с фокусом ввода. Когда запись имеет фокус ввода, она отображает курсор вставки, чтобы указать, куда будут вставлены новые символы.
Записи могут отображать строки, которые слишком длинные, чтобы полностью поместиться в окне виджета. В этом случае будет отображена только часть строки; команды, описанные ниже, могут использоваться для изменения отображения в окне. Записи используют стандартный механизм -xscrollcommand для взаимодействия со скроллбарами (подробнее см. описание параметра -xscrollcommand). Они также поддерживают сканирование, как описано ниже.
Валидация
Валидация работает путем установки параметра -validatecommand на скрипт (validateCommand), который будет вычисляться в соответствии с параметром -validate следующим образом:- none
- По умолчанию. Это означает, что валидация не будет выполняться.
- focus
- validateCommand будет вызываться, когда запись получает или теряет фокус.
- focusin
- validateCommand будет вызываться, когда запись получает фокус.
- focusout
- validateCommand будет вызываться, когда запись теряет фокус.
- key
- validateCommand будет вызываться при редактировании записи.
- all
- validateCommand будет вызываться для всех вышеперечисленных условий.
Возможно использование подстановок процентов в значениях параметров -validatecommand и -invalidcommand, как и в скрипте bind. Следующие подстановки распознаются:
- %d
- Тип действия: 1 для insert, 0 для delete или -1 для валидации фокуса, принудительной или валидации переменной текста.
- %i
- Индекс символьной строки для вставки/удаления, если имеется, иначе -1.
- %P
- Значение записи, если редактирование разрешено. Если вы настраиваете виджет записи, чтобы у него была новая переменная текста, это будет значение этой переменной.
- %s
- Текущее значение записи до редактирования.
- %S
- Строка текста, вставляемая/удаляемая, если имеется, {} в противном случае.
- %v
- Тип текущей валидации.
- %V
- Тип валидации, вызвавшей обратный вызов (key, focusin, focusout, forced).
- %W
- Имя виджета записи.
В целом, параметры -textvariable и -validatecommand могут быть опасны при совместном использовании. Все проблемы решены таким образом, что использование -validatecommand не повлияет на традиционное поведение виджета записи. Использование -textvariable в целях только для чтения никогда не вызовет проблем. Опасность возникает, когда вы пытаетесь установить -textvariable на значение, которое -validatecommand не примет, что приводит к тому, что -validate становится none (-invalidcommand не будет вызываться). То же самое происходит при возникновении ошибки при вычислении -validatecommand.
В основном, ошибка возникнет, когда -validatecommand или -invalidcommand встретят ошибку в своём скрипте во время вычисления или -validatecommand не вернёт действительное булево значение Tcl. Параметр -validate также установит себя в none, когда вы редактируете виджет записи из -validatecommand или -invalidcommand. Такие изменения переопределят изменения, которые проверялись. Если вы хотите отредактировать виджет записи (например, установить его в {}) во время валидации и сохранить значение параметра -validate, вы должны включить команду
after idle {%W config -validate %v} в -validatecommand или -invalidcommand (в зависимости от того, откуда вы редактировали виджет записи). Также рекомендуется не устанавливать связанную переменную -textvariable во время валидации, так как это может привести к тому, что виджет записи будет не синхронизирован с -textvariable. Команда виджета
Команда entry создаёт новую команду Tcl с именем pathName. Эту команду можно использовать для вызова различных операций над виджетом. Она имеет следующий общий вид:pathName subcommand ?arg arg ...?Subcommand и args определяют точное поведение команды.
Индексы
Многие команды виджетов для записей принимают один или несколько индексов в качестве аргументов. Индекс указывает на определённый символ в строке записи любым из следующих способов:- number
- Указывает символ как числовой индекс, где 0 соответствует первому символу строки.
- anchor
- Указывает точку привязки для выбора, которая устанавливается командами виджета select from и select adjust.
- end
- Указывает символ сразу после последнего символа в строке записи. Это эквивалентно указанию числового индекса, равного длине строки записи.
- insert
- Указывает символ, расположенный рядом и сразу после курсора вставки.
- sel.first
- Указывает первый символ в выделении. Использование этого формата является ошибкой, если выделение не находится в окне записи.
- sel.last
- Указывает символ сразу после последнего символа в выделении. Использование этого формата является ошибкой, если выделение не находится в окне записи.
- @number
- В этом формате number обрабатывается как координата x в окне записи; используется символ, занимающий эту координату x. Например, «@0» указывает самый левый символ в окне.
Для любого из вышеперечисленных форматов можно использовать сокращения, например, «e» или «sel.f». В общем случае индексы вне диапазона автоматически округляются до ближайшего допустимого значения.
Подкоманды
Следующие команды возможны для виджетов записи:- pathName bbox index
- Возвращает список из четырёх чисел, описывающих прямоугольную область (bounding box) символа, заданного параметром index. Первые два элемента списка — координаты x и y левого верхнего угла области на экране, занимаемой символом (в пикселях относительно виджета). Последние два элемента — ширина и высота символа в пикселях. Прямоугольная область может ссылаться на область за пределами видимой части окна.
- pathName cget option
- Возвращает текущее значение конфигурационного параметра, заданного параметром option. Параметр option может принимать любые значения, допускаемые командой entry.
- pathName configure ?option? ?value option value ...?
- Запрос или изменение конфигурационных параметров виджета. Если параметр option не указан, возвращается список, описывающий все доступные параметры для pathName (см. Tk_ConfigureInfo для информации о формате этого списка). Если параметр option указан без параметра value, то команда возвращает список, описывающий указанный параметр (этот список будет идентичен соответствующему подсписку возвращаемого значения, если параметр option не указан). Если указана одна или несколько пар option-value, то команда изменяет указанный(ые) параметр(ы) виджета на заданное(ые) значение(я); в этом случае команда возвращает пустую строку. Параметр option может принимать любые значения, допускаемые командой entry.
- pathName delete first ?last?
- Удаляет один или несколько элементов из поля ввода. First — индекс первого символа для удаления, а last — индекс символа, расположенного сразу после последнего символа для удаления. Если last не указан, он по умолчанию равен first+1, т.е. удаляется один символ. Эта команда возвращает пустую строку.
- pathName get
- Возвращает строку поля ввода.
- pathName icursor index
- Устанавливает курсор вставки перед символом, заданным параметром index. Возвращает пустую строку.
- pathName index index
- Возвращает числовой индекс, соответствующий index.
- pathName insert index string
- Вставляет символы из string перед символом, указанным параметром index. Возвращает пустую строку.
- pathName scan option args
- Эта команда используется для реализации сканирования в полях ввода. Она имеет две формы, в зависимости от option:
- pathName scan mark x
- Записывает x и текущий вид в окне поля ввода; используется совместно с последующими командами scan dragto. Обычно эта команда связана со щелчком мыши в виджете. Возвращает пустую строку.
- pathName scan dragto x
- Эта команда вычисляет разницу между аргументом x и аргументом x последней команды scan mark для виджета. Затем она сдвигает просмотр влево или вправо на 10 раз разницу в координатах x. Эта команда обычно связана с событиями перемещения мыши в виджете для создания эффекта быстрого перемещения поля ввода по окну. Возвращаемое значение — пустая строка.
- pathName selection option arg
- Эта команда используется для изменения выделения в поле ввода. Она имеет несколько форм, в зависимости от option:
- pathName selection adjust index
- Определяет конец выделения, ближайший к символу, заданному параметром index, и устанавливает этот конец выделения в index (т.е. включая, но не выходя за пределы index). Другой конец выделения становится точкой отсчёта для будущих команд select to. Если выделение отсутствует, создаётся новое выделение, включающее символы между index и последней точкой отсчёта выделения, включительно. Возвращает пустую строку.
- pathName selection clear
- Очищает выделение, если оно присутствует в этом виджете. Если выделение отсутствует, команда не оказывает влияния. Возвращает пустую строку.
- pathName selection from index
- Устанавливает точку отсчёта выделения перед символом, заданным параметром index. Не изменяет само выделение. Возвращает пустую строку.
- pathName selection present
- Возвращает 1, если символы выделены в поле ввода, и 0, если ничего не выделено.
- pathName selection range start end
- Устанавливает выделение, включающее символы, начиная с символа с индексом start и заканчивая символом перед end. Если end ссылается на тот же символ, что и start, или на более ранний, выделение в поле ввода очищается.
- pathName selection to index
- Если index стоит перед точкой отсчёта, выделение устанавливается на символы от index до, но не включая, точку отсчёта. Если index совпадает с точкой отсчёта, ничего не происходит. Если index стоит после точки отсчёта, выделение устанавливается на символы от точки отсчёта до, но не включая, index. Точка отсчёта определяется последней командой select from или select adjust в данном виджете. Если выделение отсутствует, создаётся новое выделение, используя последнюю точку отсчёта, заданную для виджета. Возвращает пустую строку.
- pathName validate
- Эта команда используется для принудительной проверки -validatecommand независимо от условий, заданных параметром -validate. Это делается путём временного изменения параметра -validate на all. Возвращает 0 или 1.
- pathName xview args
- Эта команда используется для запроса и изменения горизонтального положения текста в окне виджета. Она может принимать следующие формы:
- pathName xview
- Возвращает список, содержащий два элемента. Каждый элемент — действительная дробь от 0 до 1; вместе они описывают горизонтальную область, видимую в окне. Например, если первый элемент равен 0,2, а второй — 0,6, 20% текста поля ввода находится вне экрана слева, средние 40% видны в окне, а 40% текста находится вне экрана справа. Эти значения передаются полосам прокрутки через параметр -xscrollcommand.
- pathName xview index
- Изменяет просмотр в окне так, чтобы символ, заданный параметром index, отображался на левом краю окна.
- pathName xview moveto fraction
- Изменяет просмотр в окне так, чтобы символ, находящийся на fraction-ой части от начала текста, отображался на левом краю окна. Fraction должен быть дробью между 0 и 1.
- pathName xview scroll number what
- Эта команда сдвигает просмотр в окне влево или вправо в зависимости от number и what. Number должен быть целым числом. What должен быть либо units, либо pages, или сокращением одного из них. Если what равен units, просмотр сдвигается влево или вправо на number символов средней ширины на дисплее; если это pages, то сдвиг происходит на number экранов. Если number отрицателен, символы, расположенные левее, становятся видимыми; если положительный, — правее.
Стандартные привязки
Tk автоматически создаёт привязки классов для полей ввода, предоставляя им следующее поведение по умолчанию. В описаниях ниже «слово» относится к непрерывной группе букв, цифр или символов «_», или любому отдельному символу, отличного от этих.- Нажатие левой кнопки мыши помещает курсор вставки перед символом под курсором мыши, устанавливает фокус на этот виджет и очищает выделение в виджете. Перетаскивание левой кнопкой мыши выделяет область между курсором вставки и символом под курсором.
- Двойное нажатие левой кнопкой мыши выделяет слово под курсором и помещает курсор вставки в конец слова. Перетаскивание после двойного щелчка выделит область, состоящую из целых слов.
- Тройное нажатие левой кнопкой мыши выделяет весь текст в поле ввода и помещает курсор вставки в конец строки.
- Границы выделения можно изменить, перетаскивая левой кнопкой мыши, удерживая нажатой клавишу Shift. Это изменит границу выделения, которая была ближе к курсору мыши при нажатии левой кнопки. Если кнопка нажата дважды до перетаскивания, то выделение будет изменяться с шагом в целые слова.
- Нажатие левой кнопки мыши с нажатой клавишей Control поместит курсор вставки в поле ввода, не затрагивая выделение.
- Если в поле ввода набираются любые обычные печатные символы, они вставляются в точку курсора вставки.
- Вид в поле ввода можно изменить, перетаскивая правой кнопкой мыши. Если правая кнопка нажата без перемещения мыши, выделение скопируется в поле ввода в положение курсора.
- Если мышь перетаскивается за пределы поля ввода слева или справа при нажатой левой кнопке, поле ввода автоматически прокрутится, чтобы сделать больше текста видимым (если за пределами экрана есть больше текста на стороне, где мышь покинула окно).
- Клавиши влево и вправо перемещают курсор вставки на один символ влево или вправо; они также очищают выделение в поле ввода и устанавливают якорную точку выделения. Если клавиши влево или вправо нажаты с нажатой клавишей Shift, то курсор вставки перемещается, а выделение расширяется, чтобы включить новый символ. Клавиши Control-влево и Control-вправо перемещают курсор вставки по словам, а Control-Shift-влево и Control-Shift-вправо перемещают курсор вставки по словам и также расширяют выделение. Control-b и Control-f ведут себя так же, как клавиши влево и вправо соответственно. Meta-b и Meta-f ведут себя так же, как Control-влево и Control-вправо соответственно.
- Клавиша Home или Control-a переместит курсор вставки в начало поля ввода и очистит выделение. Shift-Home переместит курсор вставки в начало поля ввода и также расширит выделение до этой точки.
- Клавиша End или Control-e переместит курсор вставки в конец поля ввода и очистит выделение. Shift-End переместит курсор в конец и расширит выделение до этой точки.
- Клавиша Select и Control-Space устанавливают якорную точку выделения в положение курсора вставки. Они не влияют на текущее выделение. Shift-Select и Control-Shift-Space изменяют выделение до текущего положения курсора вставки, выделяя от якорной точки до курсора вставки, если ранее выделения не было.
- Control-/ выделяет весь текст в поле ввода.
- Control-\ очищает выделение в поле ввода.
- Клавиша F16 (на многих рабочих станциях Sun помечена как Copy) или Meta-w копирует выделение в виджете в буфер обмена, если выделение есть.
- Клавиша F20 (на многих рабочих станциях Sun помечена как Cut) или Control-w копирует выделение в виджете в буфер обмена и удаляет выделение. Если в виджете нет выделения, то эти клавиши не действуют.
- Клавиша F18 (на многих рабочих станциях Sun помечена как Paste) или Control-y вставляет содержимое буфера обмена в положение курсора вставки.
- Клавиша Delete удаляет выделение, если оно есть в поле ввода. Если выделения нет, она удаляет символ справа от курсора вставки.
- Клавиша BackSpace и Control-h удаляют выделение, если оно есть в поле ввода. Если выделения нет, она удаляет символ слева от курсора вставки.
- Control-d удаляет символ справа от курсора вставки.
- Meta-d удаляет слово справа от курсора вставки.
- Control-k удаляет все символы справа от курсора вставки.
- Control-t меняет местами два символа справа от курсора вставки.
Если поле ввода отключено с помощью опции -state, то его вид всё ещё можно настраивать и текст в поле можно выделять, но курсор вставки не будет отображаться, и никакие изменения текста не будут происходить, за исключением случаев, когда поле ввода связано с переменной с помощью опции -textvariable. В этом случае любые изменения в переменной отражаются в поле ввода независимо от значения его опции -state.
Поведение полей ввода может быть изменено путем определения новых назначений для отдельных виджетов или путем переопределения назначений класса.
См. также
ttk::entry
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/entry.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TkCmd/entry.htm