2018-02-05 17:22:04 +03:00
|
|
|
|
<!DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>focus</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<h1>focus</h1>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Управление фокусом ввода.</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=СИНТАКСИС></a>СИНТАКСИС</h2>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<strong>focus</strong>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<strong>focus</strong> <em>окно</em>
|
|
|
|
|
<strong>focus</strong> <em>параметр арг арг ...</em>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</pre>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=ОПИСАНИЕ></a>ОПИСАНИЕ</h2>
|
|
|
|
|
|
|
|
|
|
<p>Команда <strong>focus</strong> используется для управления
|
|
|
|
|
фокусом ввода Tk. В любой момент времени одно из окон на каждом
|
|
|
|
|
экране находится в фокусе ввода; всякое событие нажатия или
|
|
|
|
|
отпускания клавиши интерпретируются в этом окне. Обычно
|
|
|
|
|
переключение фокуса между окнами верхнего уровня на экране
|
|
|
|
|
осуществляется менеджером окон. Например, некоторые менеджеры
|
|
|
|
|
окон автоматически переключают фокус на окно верхнего уровня,
|
|
|
|
|
как только на него попадает курсор Мыши; другие устанавливают
|
|
|
|
|
фокус только при щелчке на окне. Обычно менеджер окон
|
|
|
|
|
устанавливает фокус только на окнах верхнего уровня, а
|
|
|
|
|
переключением фокуса между подчиненными окнами занимается
|
|
|
|
|
конкретное приложение.</p>
|
|
|
|
|
|
|
|
|
|
<p>Для каждого верхнего уровня Tk запоминает одно окно в фокусе
|
|
|
|
|
(последнего наследника данного верхнего уровня, в которое попал
|
|
|
|
|
фокус); когда менеджер окон переключает фокус на данный верхний
|
|
|
|
|
уровень, Tk автоматически устанавливает его на запомненное
|
|
|
|
|
окно. Внутри конкретного верхнего уровня Tk использует явное
|
|
|
|
|
моделирование фокуса по умолчанию. Обычно перемещение курсора
|
|
|
|
|
"Мыши" без изменения верхнего уровня не приводит к переключению
|
|
|
|
|
фокуса; переключение происходит, лишь если его запросил примитив
|
|
|
|
|
(например, в результате щелчка по кнопке "Мыши" ) или если
|
|
|
|
|
пользователь нажал, например, клавишу <strong>Tab</strong>.
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Неявная модель фокусировки создается процедурой <strong>Tcl
|
|
|
|
|
tk_focusFollowsMouse;</strong> она меняет параметры конфигурации
|
|
|
|
|
Tk таким образом, чтобы фокус устанавливался на окно при
|
|
|
|
|
попадании на него курсора "Мыши".Процедуры
|
|
|
|
|
<strong>Tcl</strong> <strong>tk_focusNext</strong> и
|
|
|
|
|
<strong>tk_focusPrev</strong> устанавливают порядок переключения фокуса
|
|
|
|
|
между окнами верхнего уровня. Эти процедуры определяют, помимо
|
|
|
|
|
прочего, привязки по умолчанию к клавишам <strong>Tab</strong> и
|
2015-10-19 13:27:31 +03:00
|
|
|
|
<strong>Shift-Tab</strong>.</p>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<p>Команда <strong>focus</strong> может принимать одну из
|
|
|
|
|
следующих форм:</p>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
|
|
|
|
|
<dl>
|
|
|
|
|
|
|
|
|
|
<dt> <strong>focus</strong></dt>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<dd>Возвращает имя пути окна в фокусе на дисплее, содержащем
|
|
|
|
|
главное окно приложения, или пустую строку, если никакое окно
|
|
|
|
|
данного приложения не находится в фокусе. Замечание: дисплей
|
|
|
|
|
лучше указать явно с помощью параметра
|
|
|
|
|
<strong>-displayof</strong> (см.ниже); в этом случае команда
|
|
|
|
|
сможет работать и в приложениях, использующих несколько
|
|
|
|
|
дисплеев.</dd>
|
|
|
|
|
|
|
|
|
|
<dt><strong>focus</strong> <em>окно</em></dt>
|
|
|
|
|
|
|
|
|
|
<dd>Если одно из окон данного приложения находится в фокусе на
|
|
|
|
|
дисплее окна, то команда устанавливает фокус ввода на
|
|
|
|
|
<em>окно</em> и возвращает пустую строку. Если же у приложения
|
|
|
|
|
не было фокуса ввода на дисплее окна, то окно будет запомнено
|
|
|
|
|
как окно в фокусе для данного верхнего уровня. При попадании
|
|
|
|
|
фокуса на данный верхний уровень в очередной раз Tk установит
|
|
|
|
|
его на окно. Если аргументом является пустая строка, то
|
|
|
|
|
команда не выполняет никаких действий.</dd>
|
|
|
|
|
|
|
|
|
|
<dt> <strong>focus -displayof</strong> <em>окно</em></dt>
|
|
|
|
|
|
|
|
|
|
<dd>Возвращает имя <em>окна</em> в фокусе на дисплее, содержащем
|
|
|
|
|
окно. Если <em>окно</em> в фокусе на дисплее окна не
|
|
|
|
|
принадлежит данному приложению, то команда возвращает пустую
|
|
|
|
|
строку.</dd>
|
|
|
|
|
|
|
|
|
|
<dt> <strong>focus -force</strong> <em>окно</em></dt>
|
|
|
|
|
|
|
|
|
|
<dd>Устанавливает <em>окно</em> в фокус на дисплее окна, даже
|
|
|
|
|
если у приложения нет фокуса ввода на этом дисплее. Эту
|
|
|
|
|
команду следует использовать экономно или отказаться от его
|
|
|
|
|
использования совсем. Обычно приложение не должно запрашивать
|
|
|
|
|
для себя фокус самостоятельно, дожидаясь пока на него не
|
|
|
|
|
переключит фокус менеджер окон. Если аргументом является
|
|
|
|
|
пустая строка, то команда не выполняет никаких действий.</dd>
|
|
|
|
|
|
|
|
|
|
<dt> <strong>focus -lastfor</strong> <em>окно</em></dt>
|
|
|
|
|
|
|
|
|
|
<dd>Возвращает имя <em>окна</em> , последним получившим фокус
|
|
|
|
|
ввода среди всех окон того же верхнего уровня, что и
|
|
|
|
|
окно. Если ни на какое из окон данного верхнего уровня фокус
|
|
|
|
|
не устанавливался или если окно, на которое фокус
|
|
|
|
|
устанавливался последним, удалено, то команда возвращает имя
|
|
|
|
|
верхнего уровня. Возвращаемое значение является именем окна,
|
|
|
|
|
на котором будет установлен фокус ввода при следующей передаче
|
|
|
|
|
фокуса на данный верхний уровень менеджером окна.</dd>
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</dl>
|
|
|
|
|
|
2018-02-05 17:22:04 +03:00
|
|
|
|
<h2><a name=ОСОБЕННОСТИ_РЕАЛИЗАЦИИ></a>ОСОБЕННОСТИ РЕАЛИЗАЦИИ</h2>
|
|
|
|
|
|
|
|
|
|
<p>При получении фокуса ввода внутренним окном Tk фактически не
|
|
|
|
|
устанавливает X фокус на это окно. X ведет себя таким образом,
|
|
|
|
|
что фокус сохранится на окне верхнего уровня, которому
|
|
|
|
|
подчиняется окно с фокусом. Однако Tk создает события FocusIn и
|
|
|
|
|
FocusOut в точности, как если бы X фокус был на внутреннем
|
|
|
|
|
окне. Такой подход порождает ряд трудностей при фактическом
|
|
|
|
|
переключении X фокуса; то, что X фокус установлен на данный
|
|
|
|
|
верхний уровень, незаметно, если не запрашивать X сервер
|
|
|
|
|
непосредственно из C программы.
|
2015-10-19 13:27:31 +03:00
|
|
|
|
</p>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
2018-02-05 17:22:04 +03:00
|
|
|
|
|