Создание примитива поля ввода текста и управление им.
entry имяПути параметры
Подробное описание этих параметров приведено в options.
Имя параметра: | -show |
Имя в Базе: | show |
Класс в Базе: | Show |
Если этот параметр задан, то истинное содержимое поля не выводится на экране. Вместо этого каждый символ текста заменяется первым символом значения параметра -show, скажем *. Такая возможность полезна, например, при вводе в поле пароля. Если символы поля ввода были выделены и скопированы в другом месте, то выводиться будет скопированная информация, а не истинное содержимое поля ввода.
Имя параметра: | -state |
Имя в Базе: | state |
Класс в Базе: | State |
Задает одно из двух состояний поля ввода: normal или disabled. Отключенное состояние указывает на то, что значение поля ввода нельзя изменить с помощью команд примитива. При этом курсор ввода в поле не отображается, даже если этот примитив оказался в фокусе ввода.
Имя параметра: | -width |
Имя в Базе: | width |
Класс в Базе: | Width |
Задает желаемую ширину окна поля ввода в виде целого числа. Если введенное значение не положительно, то ширина поля устанавливается такой, чтобы в него в точности помещался текст его текущего значения.
Команда entry создает новое окно (задаваемое аргументом имяПути) и превращает его в примитив поля ввода. Детали изображения кнопки, такие как ее цвета, шрифт и объемный вид, задаются с помощью описанных выше дополнительных параметров. Команда entry возвращает аргумент имяПути. В момент выполнения этой команды не должно существовать окна с именем имяПути, но должно существовать его родительское окно.
Поле ввода представляет собой примитив, предназначенный для вывода одной строки текста и редактирования ее с помощью описываемых ниже команд примитива, которые по большей части сводятся к нажатию клавиш на клавиатуре и действиям с "Мышью". При создании поля ввода его строка текста пуста. Часть содержимого поля можно выделить, совершив действия, описываемые ниже. Экспорт выделенного текста (см. описание параметра exportSelection) осуществляется по стандартному протоколу X11 для выделений; выделения в поле ввода имеют тип STRING. Поля ввода также подчиняются стандартным правилам Tk обращения с фокусом ввода. Когда поле ввода находится в фокусе ввода, в нем изображается курсор ввода , который указывает, где будут вставляться вводимые символы.
Поля ввода могут работать и с длинными строками, которые не помещаются полностью в окне примитива. С помощью описываемых ниже команд содержимое окна можно изменить. Поля ввода взаимодействуют с полосами прокрутки с помощью стандартного механизма xScrollCommand (подробно механизм взаимодействия описан при описании параметра xScrollCommand). Кроме того, они обеспечивают возможность сканирования (см. описание ниже).
Команда entry создает новую команду Tcl с именем имяПути. С помощью этой команды можно выполнять различные операции над примитивом. Ее общий вид
имяПути параметр арг арг ...
Параметр и аргументы уточняют поведение команды.
Аргументами многих команд примитива поля ввода служат индексы. Индекс задает положение конкретного символа в строке поля ввода. Он может иметь один из следующих видов:
Вместо любой из указанных форм можно использовать ее сокращение, например, "e" или "sel.f". Как правило, значения индексов, выходящие за пределы допустимых, заменяются ближайшими допустимыми значениями.
Примитивы поля ввода допускают следующие команды:
Осуществляет сканирование поля ввода. В зависимости от значения параметра может иметь две различные формы:
Производит размещение выделения в поле ввода. Команда может иметь одну из описанных ниже форм.
Используется для запроса горизонтального положения информации, выведенной в поле ввода, и изменения этого положения. Команда может иметь одну из следующих форм:
При создании поля ввода Tk автоматически создает привязки класса, определяющие поведение примитива по умолчанию. В приводимом ниже описании .слово. есть произвольная непрерывная группа букв, цифр и символов "_" или любой другой одиночный символ.
Щелчок клавишей 1 "Мыши" устанавливает курсор ввода непосредственно перед символом, расположенным под курсором "Мыши", устанавливает фокус ввода на данном примитиве и отменяет выделение в нем.
Перетаскивание курсора "Мыши" приводит к выделению символов между курсором ввода и конечным положением курсора "Мыши".
Двойной щелчок клавишей 1 "Мыши" приводит к выделению слова под курсором "Мыши" и устанавливает курсор ввода перед первым символом этого слова. Перетаскивание "Мыши" после двойного щелчка приводит к выделению группы, состоящей из целых слов.
Тройной щелчок клавишей 1 "Мыши" приводит к выделению всего текста в поле ввода и устанавливает курсор ввода перед первым символом текста.
Края выделения можно выровнять, если тащить .Мышь. с нажатой клавишей 1 при нажатой клавише Shift; в этом случае выравнивается край, ближайший к положению курсора "Мыши" в момент нажатия ее клавиши 1. Если по кнопке щелкнули дважды перед тем, как тащить "Мышь", то выделение выравнивается относительно концов полных слов.
Щелчок по клавише 1 "Мыши" при нажатой клавише Control приводит к установке курсора ввода в поле ввода без изменения текущего выделения.
Обычные печатные символы вводятся в месте расположения курсора ввода.
Содержимое поле ввода можно перемещать с помощью клавиши 2 "Мыши". Щелчок по клавише 2 "Мыши" и без ее перемещения приводит к копированию выделения в поле ввода в место расположения курсора "Мыши".
Если тащить .Мышь. слева или справа от окна поля ввода по направлению от окна при нажатой клавише 1, то в окне автоматически появляется невидимый ранее текст (если в поле со стороны, где .Мышь. покинула окно, есть текст, невидимый в окне).
Нажатие на клавиши Left или Right приводит к перемещению курсора ввода на один символ влево или вправо; при этом текущее выделение отменяется и устанавливается новая опорная точка выделения. Если нажатие на клавиши Left или Right происходит при нажатой клавише Shift, то курсор ввода перемещается и пройденный им символ добавляется к выделению. Нажатие на клавиши Control-Left и Control-Right приводит к перемещению курсора ввода на полное слово, сочетания Control-Shift-Left и Control-Shift-Right еще и расширяют выделение. Сочетания Control-b и Control-f играют ту же роль, что и Left и Right, а сочетания Meta-b и Meta-f соответственно ту же роль, что и Control-Shift-Left и Control-Shift-Right.
Нажатие на клавишу Home (или Control-a) приводит к перемещению курсора к началу текста с отменой существующих выделений. Shift-Home перемещает курсор к началу текста и доводит до этого места выделение.
Нажатие на клавишу End (или Control-e) приводит к перемещению курсора в конец текста с отменой существующих выделений. Shift-End перемещает курсор в конец текста и доводит до этого места выделение.
Нажатие на клавишу Select (или Control-Space) устанавливает опорную точку выделения в положение курсора ввода. Текущее выделение при этом не изменяется. Нажатие на клавиши t-Select (или Control-Shift-Space) доводит выделение до текущего положения курсора ввода (или устанавливает выделение между опорной точкой выделения и текущим положением курсора ввода, если текущее выделение отсутствовало).
Control-/ выделяет весь текст в окне.
{Control-\} приводит к отмене текущего выделения.
Клавиша F16, на многих станциях Sun обозначенная py, (или Meta-w) копирует выделение в примитиве в карман.
Клавиша F20, на многих станциях Sun обозначенная Cut, (или Control-w) копирует выделение в примитиве в карман и удаляет выделение. Если выделение в примитиве отсутствует, то нажатие на эти клавиши не приводит ни к каким действиям.
Клавиша F18, на многих станциях Sun обозначенная te, (или Control-y) копирует содержимое кармана в место расположения курсора ввода.
Нажатие на клавишу Delete приводит к удалению выделения. Если выделение отсутствует, то удаляется символ, непосредственно примыкающий к курсору ввода справа.
Нажатие на клавишу BackSpace (или Control-h) приводит к удалению выделения. Если выделение отсутствует, то удаляется символ, непосредственно примыкающий к курсору ввода слева.
Control-d удаляет символ, непосредственно примыкающий к курсору ввода справа.
Meta-d удаляет слово, непосредственно примыкающее к курсору ввода справа.
Control-k удаляет все символы справа от курсора ввода.
Если поле ввода отключено указанием значения disabled параметра -state, то в окне поля по-прежнему можно перемещать текст и производить выделение, однако курсор ввода в окне не появляется и редактирование текста невозможно.
Определяя новые привязки к отдельным примитивам или переопределяя привязки класса, поведение полей ввода можно изменить.