projman/hlp/ru/tk/entry.html
2018-02-05 17:23:37 +03:00

581 lines
35 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
<html>
<head>
<title>entry</title>
</head>
<body>
<h1>entry</h1>
<p>Создание примитива поля ввода текста и управление им.</p>
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
<pre>
<strong>entry</strong> <em>имяПути параметры</em>
</pre>
<h2><a name=СТАНДАРТНЫЕАРАМЕТРЫ></a>СТАНДАРТНЫЕ ПАРАМЕТРЫ</h2>
<ul>
<li>-background</li>
<li>-borderwidth</li>
<li>-cursor</li>
<li>-exportselection</li>
<li>-font</li>
<li>-foreground</li>
<li>-highlightbackground</li>
<li>-highlightcolor</li>
<li>-highlightthickness</li>
<li>-inserborderwidth</li>
<li>-insertbackground</li>
<li>-insertofftime</li>
<li>-insertontime</li>
<li>-insertwidth</li>
<li>-justify</li>
<li>-relief</li>
<li>-selectbackground</li>
<li>-selectborderwidth</li>
<li>-selectforeground</li>
<li>-takefocus</li>
<li>-textvariable</li>
<li>-xscrollcommand</li>
</ul>
<p>Подробное описание этих параметров приведено в <a
href=options.html><strong>options</strong></a>.</p>
<h2><a name=ДОПОЛНИТЕЛЬНЫЕАРАМЕТРЫ_ПРИМИТИВА></a>ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ ПРИМИТИВА</h2>
<table>
<tr><td>Имя параметра:</td><td><strong>-show</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>show</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>Show</strong></td></tr>
</table>
<p>Если этот параметр задан, то истинное содержимое поля не
выводится на экране. Вместо этого каждый символ текста
заменяется первым символом значения параметра
<strong>-show</strong>, скажем *. Такая возможность полезна,
например, при вводе в поле пароля. Если символы поля ввода были
выделены и скопированы в другом месте, то выводиться будет
скопированная информация, а не истинное содержимое поля
ввода.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-state</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>state</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>State</strong></td></tr>
</table>
<p>Задает одно из двух состояний поля ввода:
<strong>normal</strong> или
<strong>disabled</strong>. Отключенное состояние указывает на
то, что значение поля ввода нельзя изменить с помощью команд
примитива. При этом курсор ввода в поле не отображается, даже
если этот примитив оказался в фокусе ввода.</p>
<table>
<tr><td>Имя параметра:</td><td><strong>-width</strong></td></tr>
<tr><td>Имя в Базе:</td><td><strong>width</strong></td></tr>
<tr><td>Класс в Базе:</td><td><strong>Width</strong></td></tr>
</table>
<p>Задает желаемую ширину окна поля ввода в виде целого
числа. Если введенное значение не положительно, то ширина поля
устанавливается такой, чтобы в него в точности помещался текст
его текущего значения.</p>
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
<p>Команда <strong>entry</strong> создает новое окно (задаваемое
аргументом <em>имяПути</em>) и превращает его в примитив поля
ввода. Детали изображения кнопки, такие как ее цвета, шрифт и
объемный вид, задаются с помощью описанных выше дополнительных
параметров. Команда <strong>entry</strong> возвращает аргумент
<em>имяПути</em>. В момент выполнения этой команды не должно
существовать окна с именем <em>имяПути</em>, но должно
существовать его родительское окно.</p>
<p>Поле ввода представляет собой примитив, предназначенный для
вывода одной строки текста и редактирования ее с помощью
описываемых ниже команд примитива, которые по большей части
сводятся к нажатию клавиш на клавиатуре и действиям с
&quot;Мышью&quot;. При создании поля ввода его строка текста
пуста. Часть содержимого поля можно выделить, совершив действия,
описываемые ниже. Экспорт выделенного текста (см. описание
параметра <strong>exportSelection</strong>) осуществляется по
стандартному протоколу X11 для выделений; выделения в поле ввода
имеют тип <strong>STRING</strong>. Поля ввода также подчиняются
стандартным правилам Tk обращения с фокусом ввода. Когда поле
ввода находится в фокусе ввода, в нем изображается <em>курсор
ввода</em> , который указывает, где будут вставляться вводимые
символы.</p>
<p>Поля ввода могут работать и с длинными строками, которые не
помещаются полностью в окне примитива. С помощью описываемых
ниже команд содержимое окна можно изменить. Поля ввода
взаимодействуют с полосами прокрутки с помощью стандартного
механизма <strong>xScrollCommand</strong> (подробно механизм
взаимодействия описан при описании параметра
<strong>xScrollCommand</strong>). Кроме того, они обеспечивают
возможность сканирования (см. описание ниже).</p>
<h2><a name=КОМАНДАРИМИТИВА></a>КОМАНДА ПРИМИТИВА</h2>
<p>Команда <strong>entry</strong> создает новую команду Tcl с именем
<em>имяПути</em>. С помощью этой команды можно выполнять различные
операции над примитивом. Ее общий вид </p>
<pre>
<strong>имяПути</strong> <em>параметр арг арг ...</em>
</pre>
<p><em>Параметр</em> и <em>арг</em>ументы уточняют поведение
команды.</p>
<p>Аргументами многих команд примитива поля ввода служат
индексы. Индекс задает положение конкретного символа в строке
поля ввода. Он может иметь один из следующих видов:
<dl>
<dt><em>число</em></dt>
<dd>Задает номер символа в строке. Первый символ строки имеет
номер &quot;0&quot;</dd>
<dt><strong>anchor</strong></dt>
<dd>Задает опорную точку выделения, которая используется
командами примитива <strong>select from</strong> и
<strong>select adjust</strong>.<dd>
<dt><strong>end</strong></dt>
<dd>Указывает положение символа непосредственно после последнего
символа строки в поле ввода. Указание этого индекса
равносильно указанию длины строки.</dd>
<dt><strong>insert</strong></dt>
<dd>Указывает на символ, находящийся непосредственно за курсором
ввода.</dd>
<dt><strong>sel.first</strong><dt>
<dd>Указывает на первый из выделенных символов. Эта форма
индекса недопустима, если выделение не расположено в окне поля
ввода.</dd>
<dt><strong>sel.last</strong></dt>
<dd>Указывает на последний из выделенных символов. Эта форма
индекса недопустима, если выделение не расположено в окне поля
ввода.</dd>
<dt>@<em>число</em></dt>
<dd>В этом случае <em>число</em> трактуется как x-координата в
окне поля ввода; указывает на символ с этой x-координатой.
Например, &quot;<strong>@0</strong>&quot; указывает на самый левый
символ в окне ввода.</dd>
</dl>
<p>Вместо любой из указанных форм можно использовать ее
сокращение, например, &quot;<strong>e</strong>&quot; или
&quot;<strong>sel.f</strong>&quot;. Как правило, значения
индексов, выходящие за пределы допустимых, заменяются ближайшими
допустимыми значениями.</p>
<p>Примитивы поля ввода допускают следующие команды:</p>
<dl>
<dt><em>имяПути</em> <strong>bbox</strong> <em>индекс</em></dt>
<dd>Возвращает список из четырех элементов, описывающий клетку,
занимаемую символом, указанным параметром
<em>индекс</em>. Первые два элемента списка задают x- и
y-координаты верхнего левого угла клетки (в пикселях по
отношению к примитиву), последние два элемента ширину и высоту
символа (в пикселях). Клетка может находиться за пределами
видимой части окна.</dd>
<dd><em>имяПути</em> <strong>cget</strong> <em>параметр</em></dd>
<dd>Возвращает текущее значение параметра конфигурации с именем
<em>параметр</em>. <em>Параметр</em>может быть любым из
параметров команды <strong>entry</strong>.</dd>
<dt><em>имяПути</em> <strong>configure</strong> <em>параметр
значение параметр значение ...</em> </dt>
<dd>Запрашивает значения параметров конфигурации примитива или
изменяет их. Если <em>параметр</em> не указан, то возвращает
список, содержащий значения всех допустимых в <em>имениПути</em>
параметров (формат списка описан в
<strong>Tk_ConfigureInfo</strong>). Если <em>параметр</em>
задан, а его новое <em>значение</em> нет, то команда возвращает
часть полного списка, относящуюся к указанному параметру. Если
заданы одна или несколько пар <em>параметр-значение</em>, то
указанным <em>параметр</em>ам примитива присваиваются новые
<em>значения</em>. В этом случае команда возвращает пустую
строку. <em>Параметр</em> может быть любым из параметров команды
<strong>entry</strong>.</dd>
<dt><em>имяПути</em> <strong>delete</strong> <em>первый
последний</em></dt>
<dd>Удаляет один или несколько символов в поле ввода. Аргумент
<em>первый</em> является индексом первого удаляемого символа, а
аргумент <em>последний</em> представляет собой индекс символа,
следующего непосредственно за последним удаляемым символом. По
умолчанию значение аргумента <em>последний</em> на единицу
больше значения аргумента <em>первый</em>, т.е. удаляется один
символ. Команда возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>get</strong></dt>
<dd>Возвращает строку содержимое поля ввода.</dd>
<dt><em>имяПути</em> <strong>icursor</strong>
<em>индекс</em></dt>
<dd>Устанавливает курсор ввода непосредственно перед символом,
заданным аргументом <em>индекс</em>. Возвращает пустую
строку.</dd>
<dt><em>имяПути</em> <strong>index</strong> <em>индекс</em></dt>
<dd>Команда возвращает числовое значение индекса, заданного
аргументом <em>индекс</em>.</dd>
<dt><em>имяПути</em> <strong>insert</strong> <em>индекс
строка</em> </dt>
<dd>Вставляет символы <em>строки</em> непосредственно перед
символом, на который указывает аргумент <em>индекс</em>. Команда
возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>scan</strong> <em>параметр
аргументы</em></dt>
<dd><p>Осуществляет сканирование поля ввода. В зависимости от
значения <em>параметр</em>а может иметь две различные формы:</p>
<dl>
<dt><em>имяПути</em> <strong>scan mark</strong> <em>x</em>
</dt>
<dd>Запоминает значение координаты x и текущее состояние
окна поля ввода; используется в сочетании с последующими
командами <strong>scan dragto</strong>. Обычно эта команда
связана с нажатием клавиши &quot;Мыши&quot; на
примитиве. Возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>scan dragto</strong>
<em>x</em></dt>
<dd>Вычисляет разность между значением своего аргумента x и
значением аргумента x последней выполненной на данном
примитиве команды <strong>scan mark</strong>. Затем
переносит изображение примитива на расстояние, в 10 раз
превышающее вычисленную разность. Команда обычно связана с
событиями движения &quot;Мыши&quot; в примитиве и
используется для скоростного перетаскивания поля ввода в
окне. Возвращает пустую строку.</dd>
</dl>
</dd>
<dt><em>имяПути</em> <strong>selection</strong> <em>параметр
аргумент</em> </dt>
<dd><p>Производит размещение выделения в поле ввода. Команда может
иметь одну из описанных ниже форм.</p>
<dl>
<dt><em>имяПути</em> <strong>selection adjust</strong>
<em>индекс</em></dt>
<dd>Определяет ближайший к указанному аргументом
<em>индекс</em> положению край выделения и устанавливает
новое значение этого края в <em>индекс</em> (т.е. элемент
с индексом <em>индекс</em> входит в выделение, а соседний
с ним нет). Противоположный край выделения становится
опорной точкой для последующих команд <strong>select
to</strong>. Если в текущий момент выделение в поле
отсутствует, то команда заводит новое выделение,
содержащее символы между указанным аргументом
<em>индекс</em> и последней установленной опорной точкой
выделения. Возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>selection clear</strong></dt>
<dd> Очищает выделение в данном примитиве. Если выделение
отсутствует, то не производит никаких действий. Возвращает
пустую строку.</dd>
<dt><em>имяПути</em> <strong>selection from</strong>
<em>индекс</em> </dt>
<dd>Устанавливает опорную точку выделения непосредственно
перед символом, заданным аргументом
<em>индекс</em>. Текущего выделения команда не
меняет. Возвращает пустую строку.</dd>
<dt><em>имяПути</em> <strong>selection present</strong></dt>
<dd>Возвращает &quot;1&quot;, если в поле ввода имеется
выделение, в противном случае возвращает
&quot;0&quot;.</dd>
<dt><em>имяПути</em> <strong>selection range</strong>
<em>начало конец</em> </dt>
<dd>Выделяет символы между символом, указанным аргументом
<em>начало, и символом,</em> непосредственно
предшествующим указанному аргументом <em>конец.</em> Если
символ, указанный аргументом <em>конец,</em> совпадает с
символом, указанным аргументом <em>начало</em>, или
предшествует ему, то выделение становится пустым.</dd>
<dt><em>имяПути</em><strong>selection to</strong>
<em>индекс</em> </dt>
<dd>Если символ, указанный аргументом <em>индекс</em>,
предшествует опорной точке выделения, то команда выделяет
все символы между опорным символом выделения и символом,
указанным аргументом <em>индекс</em>, не включая опорный
символ. Если аргумент индекс указывает на опорный символ,
то команда ничего не делает. Если символ, указанный
аргументом <em>индекс</em>, следует за опорной точкой
выделения, то команда выделяет все символы между опорным
символом выделения и символом, указанным аргументом
<em>индекс</em>, не включая этот символ. Опорный символ
устанавливается последней выполненной на данном примитиве
командой <strong>select from</strong> или <strong>select
adjust</strong>. Если в текущий момент выделение в поле
отсутствует, то команда заводит новое выделение,
содержащее символы между указанным аргументом
<em>индекс</em> и последней установленной опорной точкой
выделения. Команда возвращает пустую строку.</dd>
</dl>
</dd>
<dt><em>имяПути</em> <strong>xview</strong>
<em>аргументы</em></dt>
<dd><p>Используется для запроса горизонтального положения
информации, выведенной в поле ввода, и изменения этого
положения. Команда может иметь одну из следующих форм:</p>
<dl>
<dt><em>имяПути</em> <strong>xview</strong></dt>
<dd>Возвращает список, состоящий из двух элементов. Каждый
из элементов списка представляет собой вещественное число,
заключенное между нулем и единицей; эта пара чисел
описывает видимый в окне горизонтальный интервал. Так,
например, если первое число равно &quot;2&quot;, а второе
&quot;6&quot;, то 20% текста в поле ввода оказывается
невидимой слева от окна, в окне выводится 40% информации,
и еще 40% оказывается невидимой справа от окна. Те же
значения передаются полосе прокрутки через параметр
<strong>-xscrollcommand</strong>.</dd>
<dt><em>имяПути</em> <strong>xview</strong>
<em>индекс</em></dt>
<dd>Переносит строку в поле ввода так, что самым левым
символом в окне становится символ, указанный аргументом
<em>индекс</em>.</dd>
<dt><em>имяПути</em> <strong>xview moveto</strong>
<em>число</em></dt>
<dd>Передвигает область видимости так, что слева от окна
остается невидимой часть поля ввода, указанная аргументом
<em>число</em>. <em>Число</em> должно быть заключено между
&quot;0&quot; и &quot;1&quot;.</dd>
<dt><em>имяПути</em> <strong>xview scroll</strong>
<em>количество что</em></dt>
<dd>Сдвигает выводимый в окне текст вправо или влево в
соответствии со значениями аргументов. <em>Количество</em>
должно быть целым числом, аргумент <em>что</em> может
принимать значения <strong>units</strong> или
<strong>pages</strong> или быть сокращением одного из этих
слов. Если аргумент <em>что</em> принимает значение
<strong>units</strong>, то сдвиг происходит на
<em>количество</em> символов средней ширины. Если
значением аргумента <em>что</em> является
<strong>pages</strong>, то сдвиг осуществляется на
<em>количество</em> полных экранов. Если
<em>количество</em> отрицательно, то видимые символы
сдвигаются вправо, в противном случае влево.</dd>
</dl>
</dd>
</dl>
<h2><a name=ПРИВЯЗКИ_ПО_УМОЛЧАНИЮ></a>ПРИВЯЗКИ ПО УМОЛЧАНИЮ</h2>
<p>При создании поля ввода Tk автоматически создает привязки
класса, определяющие поведение примитива по умолчанию. В
приводимом ниже описании .слово. есть произвольная непрерывная
группа букв, цифр и символов &quot;_&quot; или любой другой
одиночный символ.
<p>Щелчок клавишей 1 &quot;Мыши&quot; устанавливает курсор ввода
непосредственно перед символом, расположенным под курсором
&quot;Мыши&quot;, устанавливает фокус ввода на данном примитиве
и отменяет выделение в нем.</p>
<p>Перетаскивание курсора &quot;Мыши&quot; приводит к выделению
символов между курсором ввода и конечным положением курсора
&quot;Мыши&quot;.</p> <p>Двойной щелчок клавишей 1
&quot;Мыши&quot; приводит к выделению слова под курсором
&quot;Мыши&quot; и устанавливает курсор ввода перед первым
символом этого слова. Перетаскивание &quot;Мыши&quot; после
двойного щелчка приводит к выделению группы, состоящей из целых
слов.</p>
<p>Тройной щелчок клавишей 1 &quot;Мыши&quot; приводит к выделению
всего текста в поле ввода и устанавливает курсор ввода перед
первым символом текста.</p>
<p>Края выделения можно выровнять, если тащить .Мышь. с нажатой
клавишей 1 при нажатой клавише <strong>Shift</strong>; в этом
случае выравнивается край, ближайший к положению курсора
&quot;Мыши&quot; в момент нажатия ее клавиши 1. Если по кнопке
щелкнули дважды перед тем, как тащить &quot;Мышь&quot;, то
выделение выравнивается относительно концов полных слов.</p>
<p>Щелчок по клавише 1 &quot;Мыши&quot; при нажатой клавише
Control приводит к установке курсора ввода в поле ввода без
изменения текущего выделения.</p>
<p>Обычные печатные символы вводятся в месте расположения курсора
ввода.</p>
<p>Содержимое поле ввода можно перемещать с помощью клавиши 2
&quot;Мыши&quot;. Щелчок по клавише 2 &quot;Мыши&quot; и без ее
перемещения приводит к копированию выделения в поле ввода в
место расположения курсора &quot;Мыши&quot;.</p>
<p>Если тащить .Мышь. слева или справа от окна поля ввода по
направлению от окна при нажатой клавише 1, то в окне
автоматически появляется невидимый ранее текст (если в поле со
стороны, где .Мышь. покинула окно, есть текст, невидимый в
окне).</p>
<p>Нажатие на клавиши <strong>Left</strong> или
<strong>Right</strong> приводит к перемещению курсора ввода на
один символ влево или вправо; при этом текущее выделение
отменяется и устанавливается новая опорная точка выделения. Если
нажатие на клавиши <strong>Left</strong> или
<strong>Right</strong> происходит при нажатой клавише
<strong>Shift</strong>, то курсор ввода перемещается и
пройденный им символ добавляется к выделению. Нажатие на клавиши
<strong>Control-Left</strong> и <strong>Control-Right</strong>
приводит к перемещению курсора ввода на полное слово, сочетания
<strong>Control-Shift-Left</strong> и
<strong>Control-Shift-Right</strong> еще и расширяют
выделение. Сочетания <strong>Control-b</strong> и
<strong>Control-f</strong> играют ту же роль, что и
<strong>Left</strong> и <strong>Right</strong>, а сочетания
<strong>Meta-b</strong> и <strong>Meta-f</strong> соответственно
ту же роль, что и <strong>Control-Shift-Left</strong> и
<strong>Control-Shift-Right</strong>.</p>
<p>Нажатие на клавишу <strong>Home</strong> (или
<strong>Control-a</strong>) приводит к перемещению курсора к
началу текста с отменой существующих
выделений. <strong>Shift-Home</strong> перемещает курсор к
началу текста и доводит до этого места выделение.</p>
<p>Нажатие на клавишу <strong>End</strong> (или
<strong>Control-e</strong>) приводит к перемещению курсора в
конец текста с отменой существующих
выделений. <strong>Shift-End</strong> перемещает курсор в конец
текста и доводит до этого места выделение.</p>
<p>Нажатие на клавишу <strong>Select</strong> (или
<strong>Control-Space</strong>) устанавливает опорную точку
выделения в положение курсора ввода. Текущее выделение при этом
не изменяется. Нажатие на клавиши <strong>t-Select</strong> (или
<strong>Control-Shift-Space</strong>) доводит выделение до
текущего положения курсора ввода (или устанавливает выделение
между опорной точкой выделения и текущим положением курсора
ввода, если текущее выделение отсутствовало).</p>
<p><strong>Control-/</strong> выделяет весь текст в окне.</p>
<p><strong>{Control-\}</strong> приводит к отмене текущего
выделения.</p>
<p>Клавиша <strong>F16</strong>, на многих станциях Sun
обозначенная <strong>py</strong>, (или
<strong>Meta-w</strong>) копирует выделение в примитиве в
карман.</p>
<p>Клавиша <strong>F20</strong>, на многих станциях Sun
обозначенная <strong>Cut</strong>, (или
<strong>Control-w</strong>) копирует выделение в примитиве в
карман и удаляет выделение. Если выделение в примитиве
отсутствует, то нажатие на эти клавиши не приводит ни к каким
действиям.</p>
<p>Клавиша <strong>F18</strong>, на многих станциях Sun
обозначенная <strong>te</strong>, (или
<strong>Control-y</strong>) копирует содержимое кармана в место
расположения курсора ввода.</p>
<p>Нажатие на клавишу <strong>Delete</strong> приводит к удалению
выделения. Если выделение отсутствует, то удаляется символ,
непосредственно примыкающий к курсору ввода справа.</p>
<p>Нажатие на клавишу <strong>BackSpace</strong> (или
<strong>Control-h</strong>) приводит к удалению выделения. Если
выделение отсутствует, то удаляется символ, непосредственно
примыкающий к курсору ввода слева.</p>
<p><strong>Control-d</strong> удаляет символ, непосредственно
примыкающий к курсору ввода справа.</p>
<p><strong>Meta-d</strong> удаляет слово, непосредственно
примыкающее к курсору ввода справа.</p>
<p><strong>Control-k</strong> удаляет все символы справа от
курсора ввода.</p>
<p>Если поле ввода отключено указанием значения
<strong>disabled</strong> параметра <strong>-state</strong>, то
в окне поля по-прежнему можно перемещать текст и производить
выделение, однако курсор ввода в окне не появляется и
редактирование текста невозможно.</p>
<p>Определяя новые привязки к отдельным примитивам или
переопределяя привязки класса, поведение полей ввода можно
изменить.</p>
</body>
</html>