# entry

Создание примитива поля ввода текста и управление им.

## СИНТАКСИС

          entry имяПути параметры

## СТАНДАРТНЫЕ ПАРАМЕТРЫ

- -background
- -borderwidth
- -cursor
- -exportselection
- -font
- -foreground
- -highlightbackground
- -highlightcolor
- -highlightthickness
- -inserborderwidth
- -insertbackground
- -insertofftime
- -insertontime
- -insertwidth
- -justify
- -relief
- -selectbackground
- -selectborderwidth
- -selectforeground
- -takefocus
- -textvariable
- -xscrollcommand

Подробное описание этих параметров приведено в options.

## ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА

Имя параметра: | -show
Имя в Базе: | show
Класс в Базе: | Show

Если этот параметр задан, то истинное содержимое поля не выводится на экране. Вместо этого каждый символ текста заменяется первым символом значения параметра -show, скажем *. Такая возможность полезна, например, при вводе в поле пароля. Если символы поля ввода были выделены и скопированы в другом месте, то выводиться будет скопированная информация, а не истинное содержимое поля ввода.

Имя параметра: | -state
Имя в Базе: | state
Класс в Базе: | State

Задает одно из двух состояний поля ввода: normal или disabled. Отключенное состояние указывает на то, что значение поля ввода нельзя изменить с помощью команд примитива. При этом курсор ввода в поле не отображается, даже если этот примитив оказался в фокусе ввода.

Имя параметра: | -width
Имя в Базе: | width
Класс в Базе: | Width

Задает желаемую ширину окна поля ввода в виде целого числа. Если введенное значение не положительно, то ширина поля устанавливается такой, чтобы в него в точности помещался текст его текущего значения.

## ОПИСАНИЕ

Команда entry создает новое окно (задаваемое аргументом имяПути) и превращает его в примитив поля ввода. Детали изображения кнопки, такие как ее цвета, шрифт и объемный вид, задаются с помощью описанных выше дополнительных параметров. Команда entry возвращает аргумент имяПути. В момент выполнения этой команды не должно существовать окна с именем имяПути, но должно существовать его родительское окно.

Поле ввода представляет собой примитив, предназначенный для вывода одной строки текста и редактирования ее с помощью описываемых ниже команд примитива, которые по большей части сводятся к нажатию клавиш на клавиатуре и действиям с "Мышью". При создании поля ввода его строка текста пуста. Часть содержимого поля можно выделить, совершив действия, описываемые ниже. Экспорт выделенного текста (см. описание параметра exportSelection) осуществляется по стандартному протоколу X11 для выделений; выделения в поле ввода имеют тип STRING. Поля ввода также подчиняются стандартным правилам Tk обращения с фокусом ввода. Когда поле ввода находится в фокусе ввода, в нем изображается курсор ввода , который указывает, где будут вставляться вводимые символы.

Поля ввода могут работать и с длинными строками, которые не помещаются полностью в окне примитива. С помощью описываемых ниже команд содержимое окна можно изменить. Поля ввода взаимодействуют с полосами прокрутки с помощью стандартного механизма xScrollCommand (подробно механизм взаимодействия описан при описании параметра xScrollCommand). Кроме того, они обеспечивают возможность сканирования (см. описание ниже).

## КОМАНДА ПРИМИТИВА

Команда entry создает новую команду Tcl с именем имяПути. С помощью этой команды можно выполнять различные операции над примитивом. Ее общий вид

          имяПути параметр арг арг ...

Параметр и аргументы уточняют поведение команды.

Аргументами многих команд примитива поля ввода служат индексы. Индекс задает положение конкретного символа в строке поля ввода. Он может иметь один из следующих видов:

число
  Задает номер символа в строке. Первый символ строки имеет номер "0"
anchor
  Задает опорную точку выделения, которая используется командами примитива select from и select adjust.
end
  Указывает положение символа непосредственно после последнего символа строки в поле ввода. Указание этого индекса равносильно указанию длины строки.
insert
  Указывает на символ, находящийся непосредственно за курсором ввода.
sel.first
  Указывает на первый из выделенных символов. Эта форма индекса недопустима, если выделение не расположено в окне поля ввода.
sel.last
  Указывает на последний из выделенных символов. Эта форма индекса недопустима, если выделение не расположено в окне поля ввода.
@число
  В этом случае число трактуется как x-координата в окне поля ввода; указывает на символ с этой x-координатой. Например, "@0" указывает на самый левый символ в окне ввода.

Вместо любой из указанных форм можно использовать ее сокращение, например, "e" или "sel.f". Как правило, значения индексов, выходящие за пределы допустимых, заменяются ближайшими допустимыми значениями.

Примитивы поля ввода допускают следующие команды:

имяПути bbox индекс
  Возвращает список из четырех элементов, описывающий клетку, занимаемую символом, указанным параметром индекс. Первые два элемента списка задают x- и y-координаты верхнего левого угла клетки (в пикселях по отношению к примитиву), последние два элемента ширину и высоту символа (в пикселях). Клетка может находиться за пределами видимой части окна.
  имяПути cget параметр
  Возвращает текущее значение параметра конфигурации с именем параметр. Параметрможет быть любым из параметров команды entry.
имяПути configure параметр значение параметр значение ...
  Запрашивает значения параметров конфигурации примитива или изменяет их. Если параметр не указан, то возвращает список, содержащий значения всех допустимых в имениПути параметров (формат списка описан в Tk_ConfigureInfo). Если параметр задан, а его новое значение нет, то команда возвращает часть полного списка, относящуюся к указанному параметру. Если заданы одна или несколько пар параметр-значение, то указанным параметрам примитива присваиваются новые значения. В этом случае команда возвращает пустую строку. Параметр может быть любым из параметров команды entry.
имяПути delete первый последний
  Удаляет один или несколько символов в поле ввода. Аргумент первый является индексом первого удаляемого символа, а аргумент последний представляет собой индекс символа, следующего непосредственно за последним удаляемым символом. По умолчанию значение аргумента последний на единицу больше значения аргумента первый, т.е. удаляется один символ. Команда возвращает пустую строку.
имяПути get
  Возвращает строку содержимое поля ввода.
имяПути icursor индекс
  Устанавливает курсор ввода непосредственно перед символом, заданным аргументом индекс. Возвращает пустую строку.
имяПути index индекс
  Команда возвращает числовое значение индекса, заданного аргументом индекс.
имяПути insert индекс строка
  Вставляет символы строки непосредственно перед символом, на который указывает аргумент индекс. Команда возвращает пустую строку.
имяПути scan параметр аргументы

  Осуществляет сканирование поля ввода. В зависимости от значения параметра может иметь две различные формы:

  имяПути scan mark x
    Запоминает значение координаты x и текущее состояние окна поля ввода; используется в сочетании с последующими командами scan dragto. Обычно эта команда связана с нажатием клавиши "Мыши" на примитиве. Возвращает пустую строку.
  имяПути scan dragto x
    Вычисляет разность между значением своего аргумента x и значением аргумента x последней выполненной на данном примитиве команды scan mark. Затем переносит изображение примитива на расстояние, в 10 раз превышающее вычисленную разность. Команда обычно связана с событиями движения "Мыши" в примитиве и используется для скоростного перетаскивания поля ввода в окне. Возвращает пустую строку.
имяПути selection параметр аргумент

  Производит размещение выделения в поле ввода. Команда может иметь одну из описанных ниже форм.

  имяПути selection adjust индекс
    Определяет ближайший к указанному аргументом индекс положению край выделения и устанавливает новое значение этого края в индекс (т.е. элемент с индексом индекс входит в выделение, а соседний с ним нет). Противоположный край выделения становится опорной точкой для последующих команд select to. Если в текущий момент выделение в поле отсутствует, то команда заводит новое выделение, содержащее символы между указанным аргументом индекс и последней установленной опорной точкой выделения. Возвращает пустую строку.
  имяПути selection clear
    Очищает выделение в данном примитиве. Если выделение отсутствует, то не производит никаких действий. Возвращает пустую строку.
  имяПути selection from индекс
    Устанавливает опорную точку выделения непосредственно перед символом, заданным аргументом индекс. Текущего выделения команда не меняет. Возвращает пустую строку.
  имяПути selection present
    Возвращает "1", если в поле ввода имеется выделение, в противном случае возвращает "0".
  имяПути selection range начало конец
    Выделяет символы между символом, указанным аргументом начало, и символом, непосредственно предшествующим указанному аргументом конец. Если символ, указанный аргументом конец, совпадает с символом, указанным аргументом начало, или предшествует ему, то выделение становится пустым.
  имяПути selection to индекс
    Если символ, указанный аргументом индекс, предшествует опорной точке выделения, то команда выделяет все символы между опорным символом выделения и символом, указанным аргументом индекс, не включая опорный символ. Если аргумент индекс указывает на опорный символ, то команда ничего не делает. Если символ, указанный аргументом индекс, следует за опорной точкой выделения, то команда выделяет все символы между опорным символом выделения и символом, указанным аргументом индекс, не включая этот символ. Опорный символ устанавливается последней выполненной на данном примитиве командой select from или select adjust. Если в текущий момент выделение в поле отсутствует, то команда заводит новое выделение, содержащее символы между указанным аргументом индекс и последней установленной опорной точкой выделения. Команда возвращает пустую строку.
имяПути xview аргументы

  Используется для запроса горизонтального положения информации, выведенной в поле ввода, и изменения этого положения. Команда может иметь одну из следующих форм:

  имяПути xview
    Возвращает список, состоящий из двух элементов. Каждый из элементов списка представляет собой вещественное число, заключенное между нулем и единицей; эта пара чисел описывает видимый в окне горизонтальный интервал. Так, например, если первое число равно "2", а второе "6", то 20% текста в поле ввода оказывается невидимой слева от окна, в окне выводится 40% информации, и еще 40% оказывается невидимой справа от окна. Те же значения передаются полосе прокрутки через параметр -xscrollcommand.
  имяПути xview индекс
    Переносит строку в поле ввода так, что самым левым символом в окне становится символ, указанный аргументом индекс.
  имяПути xview moveto число
    Передвигает область видимости так, что слева от окна остается невидимой часть поля ввода, указанная аргументом число. Число должно быть заключено между "0" и "1".
  имяПути xview scroll количество что
    Сдвигает выводимый в окне текст вправо или влево в соответствии со значениями аргументов. Количество должно быть целым числом, аргумент что может принимать значения units или pages или быть сокращением одного из этих слов. Если аргумент что принимает значение units, то сдвиг происходит на количество символов средней ширины. Если значением аргумента что является pages, то сдвиг осуществляется на количество полных экранов. Если количество отрицательно, то видимые символы сдвигаются вправо, в противном случае влево.

## ПРИВЯЗКИ ПО УМОЛЧАНИЮ

При создании поля ввода 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, то в окне поля по-прежнему можно перемещать текст и производить выделение, однако курсор ввода в окне не появляется и редактирование текста невозможно.

Определяя новые привязки к отдельным примитивам или переопределяя привязки класса, поведение полей ввода можно изменить.