projman/hlp/ru/tk/wm.html
2015-10-19 14:27:31 +04:00

527 lines
26 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 3.2//EN">
<html>
<head>
<title>Wm</title>
</head>
<body>
<center><h1>Wm</h1></center>
<p>Команда взаимодействия с менеджером окон.</p>
<p><ul>
<li><a href="Wm.html#СИНТАКСИС">Синтаксис</a></li>
<li><a href="Wm.html#ОПИСАНИЕ">Описание</a></li>
<li><a href="Wm.html#УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ">Управление геометрией</a></li>
<li><a href="Wm.html#УПРАВЛЕНИЕ ОКНАМИ С СЕТКОЙ">Управление окнами с сеткой</a></li>
<li><a href="Wm.html#ОШИБКИ">Ошибки</a></li>
</ul>
<p><a name="СИНТАКСИС"></a><b>СИНТАКСИС</b>
<dl>
<dt><b>wm</b> <i>option window ?args?</i></dt>
</dl>
<p><a name="ОПИСАНИЕ"></a><b>ОПИСАНИЕ</b>
Команда <b>wm</b> предназначена для
взаимодействия с менеджером окон и обеспечивает таким образом
управление такими атрибутами окон, как заголовок, размеры и
размещение, возможность изменять размер. Команда имеет несколько
форм в зависимости от используемых опций. Во всех формах команда
предполагает наличие по крайней мере одного аргумента имени toplevel окна.
<p>Ниже перечислены возможные формы команды.
<dl>
<dt><b>wm aspect</b> <i>window minNumer minDenom maxNumer maxDenom</i></dt>
<dt><p>Если аргументы <i>minNumer, minDenom, maxNume</i> и <i>maxDenom</i>
заданы, они передаются менеджеру
окон, который использует их для определения допустимых пропорций
окна. Пропорции (отношение ширина высота) могут быть в диапазоне
от <i>minNumer/minDenom</i> до <i>maxNumer/maxDenom</i>. Если
аргументы <i>minNumer</i> и т.д. определены как пустые строки, то
существующие ограничения на пропорции отменяются. Если аргументы
<i>minNumer</i> и т.д. заданы, то команда возвращает пустое
значение. В противном случае она возвращает список из четырех
элементов текущих значений <i>minNumer, minDenom, maxNumer</i>, и <i>maxDenom</i>
(если ограничения не заданы, возвращается пустая строка).
</dt>
<dt><p><b>wm client</b> <i>window name</i></dt>
<dt><p><div>Если имя <i>name</i> указано (<i>name</i> должно
быть именем компьютера, на котором исполняется приложение), то
оно сохраняется в свойстве окна <b>WM_CLIENT_MACHINE</b> и может
использоваться менеджером окон или менеджером сессий. В этом
случае команда возвращает пустую строку. Если аргумент
<i>name</i> не задан, команда возвращает последнее установленное
ранее значение свойства. Если аргумент <i>name</i> определен как
пустая строка, свойство окна <b>WM_CLIENT_MACHINE</b> удаляется.</dt>
<dt><p><b>wm colormapwindows</b> <i>window ?windowList?</i></dt>
<dt><p>Эта команда используется для управления свойством
<b>WM_COLORMAP_WINDOWS</b>, которое обеспечивает менеджер окон
информацией об окнах, имеющих собственную палитру. Если аргумент
<i>windowList</i>не задан, команда возвращает список окон,
имеющих собственную палитру. Если аргумент задан, он представляет
собой список полных имен окон. Команда изменяет старое значение
свойства на новое и возвращает пустую строку. Список окон
перечисляет внутренние окна, палитра которых отличается от
палитры их логических предков. Порядок, в котором перечислены
окна, указывает порядок, в котором менеджер окон просматривает
окна, пытаясь разместить новые цвета в палитре. Не указанные в
списке окна обрабатываются в последнюю очередь. Если команда не
использовалась, Tk автоматически устанавливает свойство для
каждого toplevel окна. В списке перечисляются все его внутренние
окна, имеющие собственную палитру, в случайном порядке. В конце
списка указывается само toplevel окно. Более подробно свойство
<b>WM_COLORMAP_WINDOWS</b> описано в (1).</dt>
<dt><p><b>wm command</b> <i>window value</i></dt>
<dt><p>Если аргумент <i>value</i> задан, команда
сохраняет его значение в свойстве окна <b>WM_COMMAND</b>, которое
используется менеджером окон или менеджером сессий. В этом случае
команда возвращает пустую строку. Аргумент <i>value</i> должен
содержать список, элементы которого являются словами команды,
используемой для запуска приложения (см. также <b>wmuse</b><b>).</b></dt>
<dt><p>Если аргумент <i>value</i> не задан, команда возвращает последнее
установленное ранее значение свойства. Если аргумент <i>name</i>
определен как пустая строка, свойство окна <b>WM_COMMAND</b>
удаляется.</dt>
<dt><p><b>wm deiconify</b> <i>window</i></p></dt>
<dt><p>Заставляет окно появиться на экране в нормальном
виде (а не в виде иконки, например,). Если окно ранее не
появлялось на экране, выполнение команды не приведет к его
появлению, но она гарантирует, что если в будущем окно появится,
оно появится в нормальном виде. Команда возвращает пустую
строку.</dt>
<dt><p><b>wm focusmodel <i></i></b><i>window</i><b>active</b>|<b>passive</b></dt>
<dt><p>Если тип фокуса для (<b>active</b> или
<b>passive</b>) окна указан в команде, он определяет какой тип
фокуса будет использоваться. В этом случае команда возвращает
пустую строку. Если тип фокуса не указан, команда возвращает
текущее значение типа. Активный тип фокуса означает, что окно
запрашивает фокус ввода себе или своим потомкам, даже если в этот
момент фокус находится в другом приложении. Пассивный фокус
означает, что окно не запрашивает фокус, а получает его от
менеджера окон. Однако, после того, как окно или один из его
потомков получил фокус, приложение может передать его другому
потомку окна. По умолчанию устанавливает пассивный фокус.</dt>
<dt><p><b>wm <i></i>frame</b> <i>window</i><dt>
<dt><p>Если окно заключено менеджером окон в
декоративную рамку, команда возвращает идентификатор самой
внешней рамки, которая содержит окно (окно, являющееся потомком
корневого окна или виртуального корневого окна). Вид
идентификатора зависит от платформы. Если окно не заключено в
рамку, возвращается идентификатор окна, вид которого также
зависит от платформы.</t>
<dt><p><b>wm geometry</b> <i>window newGeometry</i></dt>
<dt><p>Если задан аргумент <i>newGeometry</i>, размеры и размещение
окна изменяются, а команда возвращает пустую строку. В противном
случае возвращается последняя информация о размерах и размещении
окна (независимо от того, была ли она задана путем изменения
размеров окна вручную или с помощью команды <b>wm</b>). Аргумент
<i>newGeometry</i> должен быть задан в следующем виде
<i>=ширинаxвысота╠x╠y</i>, где любая из частей
<i>=ширинаxвысота</i> или <i>╠x╠y</i> может быть опущена. Ширина
и высота должны быть положительными целыми числами, задающими
желаемый размер окна. Если для окна задана сетка
(см. .<a href="Wm.html#УПРАВЛЕНИЕ ОКНАМИ С СЕТКОЙ">Управление окнами с
сеткой</a>.), размеры указываются в шагах сетки. В противном
случае размеры указываются в пикселях. <i>X</i> и Y определяют
желаемое размещение окна на экране в пикселях. Если перед
<i>x</i> стоит .<i>+.,</i> то величина <i>x</i> определяет
расстояние от левого края экрана до левого края окна, в противном
случае <i>x</i> задает расстояние от правого края экрана до
правого края окна. Если перед y стоит .+., то величина <i>y</i>
определяет расстояние от верхнего края экрана до верхнего края
окна, в противном случае <i>y</i> задает расстояние от низа
экрана до нижнего края окна. Если аргумент <i>newGeometry</i>
задан как пустая строка, текущие установленные пользователем
размеры окна отменяются и окно приобретает размеры, определяемые
размерами составляющих его виджетов.</dt>
<dt><p><b>wm grid</b> <i>window baseWidth baseHeight widthInc heightInc</i></dt>
<dt><br>Команда определяет наличие сетки в окне и
позволяет задать шаг сетки в пикселях. <i>BaseWidth</i> и
<i>baseHeight</i> определяют в единицах сетки исходный размер
окна (определяемый, исходя из размеров виджетов). <i>WidthInc</i>
и <i>heightInc</i> определяют соответственно горизонтальный и
вертикальный шаг сетки. Таким образом, эти четыре величины
определяют множество допустимых размеров окна. После выполнения
этой команды команда <b>wm geometry</b> считает размеры окна
заданными в шагах сетки. Более того, при ручном изменении
размеров менеджер окон показывает размер окна в шагах (ячейках)
сетки и позволяет изменять размер только дискретно в целых шагах
сетки.<br>
Если <i>BaseWidth</i> и последующие аргументы команды пустые
строки, команда указывает, что окно больше не имеет сетки.</dt>
<dt><br>Если <i>BaseWidth</i> и последующие аргументы
заданы, команда возвращает пустую строку. В противном случае
команда возвращает список из четырех элементов, содержащий
текущие значения <i>BaseWidth</i> и последующих аргументов. Если
окно не имеет сетки возвращается пустая строка.</dt>
<dt><p><b><i>Замечание</i></b>. Потребность в использовании команды
<b>wm grid</b> возникает относительно редко, поскольку той же
функциональности поведения окна можно добиться, например, с
помощью опции <b>setGrid</b> в командах создания виджетов.</dt>
<dt><p><b>wm group</b> <i>window pathName</i></dt>
<dt><p>Если аргумент <i>pathName</i> указан, окно
<i>pathName</i> становится лидером группы для <i>window</i>.
Менеджер окон использует эту информацию, например, для того,
чтобы одновременно выводить с экрана все окна группы, если
сворачивается лидер группы. Если аргумент <i>pathName</i>
представлен пустой строкой, окно <i>window</i> выводится из
состава группы.<br>
Если аргумент <i>pathName</i> задан, команда возвращает пустую
строку. В противном случае команда возвращает имя текущего лидера
группы для окна <i>window</i> или пустую строку, если лидер не
определен.</dt>
<dt><p><b>wm iconbitmap</b> <i>window bitmap</i></dt>
<dt><p>Если аргумент <i>bitmap</i> задан, он определяет
имя растрового образа, которое передается менеджеру окон для
использования в качестве иконки. Имя образа может быть задано в
одной из следующих форм:</dt>
<dt>
<dd>@<i>ИмяФайла</i> файл должен содержать описание растрового
рисунка в формате, соответствующем стандарту X11 или X10</dd>
<dd><i>name</i> имя образа типа <i>bitmap</i>, ранее созданного в приложении.</dd>
<dd>Если аргумент <i>bitmap</i> представляет собой пустую строку, отменяется использование ранее заданного образа.</dd>
<dd>Если аргумент <i>bitmap</i> задан, команда возвращает пустую строку. В противном случае команда возвращает имя образа, используемого джля иконки, либо пустую строку, если образ не задан.</dd>
</dt>
<dt><p><b>wm iconify</b> <i>window</i></dt>
<dt><p>Команда сворачивает указанное окно. Если окно еще не было размещено на экран, оно появится, когда это произойдет, в виде иконки.</dt>
<dt><p><b>wm iconmask</b> <i>window bitmap</i></dt>
<dt><p>Если аргумент <i>bitmap</i> задан, он определяет
имя растрового образа, которое передается менеджеру окон для
использования в качестве маски для иконки. Там, где маска имеет
значение .0., образ иконки не отображается; там, где маска имеет
значение .1., маска рисуется. Имя образа может быть задано в
одной из следующих форм:</dt>
<dt><br><i>@ИмяФайла</i> файл должен содержать описание растрового рисунка в формате, соответствующем стандарту X11 или X10;</dt>
<dt><br><i>name</i> имя образа типа <i>bitmap</i>, ранее созданного в приложении.</dt>
<dt><br>Если аргумент <i>bitmap</i> представляет собой пустую строку, отменяется использование ранее заданной маски (это эквивалентно заданию маски из одних единиц).</dt>
<dt><br>Если аргумент <i>bitmap</i> задан, команда возвращает пустую строку. В противном случае команда возвращает имя образа, используемого для маски для данного окна, либо пустую строку, если маска не задана.</dt>
<dt><br><b>wm iconname</b> <i>window ?newName?</i></dt>
<dt><br>Если аргумент <i>newName</i> задан, он передается менеджеру окон для использования в качестве имени иконки для окна. В этом случае команда возвращает пустую строку. Если аргумент <i>newName</i>не задан, команда возвращает текущее имя иконки для окна; если имя иконки не задано, команда возвращает пустую строку (в этом случае менеджер окон использует в качестве имени иконки имя окна, заданное с помощью команды <b>wmtitle</b><b>).</b></dt>
<dt><br><b>wm iconposition</b> <i>window x y</i></dt>
<dt><br>Если аргументы <i>x</i> и <i>y</i> заданы, они
передаются менеджеру окон и используются как подсказка при
размещении иконки окна <i>window</i>. В этом случае команда
возвращает пустую строку. Если <i>x</i> и <i>y</i> представляют
собой пустые строки, команда отменяет ранее определенную
подсказку для размещения иконки. Если аргументы <i>x</i> и
<i>y</i> не заданы, команда возвращает текущее значение подсказки
(или пустую строку, если она не задана).</dt>
<dt><br><b>wm iconwindow</b> <i>window pathName</i></dt>
<dt><br>Если аргумент <i>pathName</i> указан, он
определяет имя окна, которое используется в качестве иконки для
окна <i>window</i>: кодгда окно <i>window</i> свертывается,
появляется окно <i>pathName</i>, которое используется в качестве
иконки. Когда окно <i>window</i> разворачивается, окно
<i>pathName</i> выводится с экрана. Если аргумент <i>pathName</i>
представляет собой пустую строку, ранее определенное окно больше
не используется как иконка.</dt>
<dt><br>Если аргумент <i>pathName</i> указан, команда возвращает пустую
строку. В противном случае команда возвращает имя окна, ранее
заданного в качестве иконки, или пустую строку, если ранее оно не
было задано.</dt>
<dt><br>Нажатие на кнопку .Мыши. в окне-иконке не обрабатываются приложением, что позволяет обрабатывать эти события менеджеру окон.</dt>
<dt><br>Замечание. Не все менеджеры окон позволяют использовать Tk-окно в качестве иконки.</dt>
<dt><br><b>wm maxsize</b> <i>window width height</i></dt>
<dt><br>Если аргументы <i>width</i> и <i>height</i>
заданы, они задают максимальный возможный размер окна. Если в
окне определена сетка, размеры указываются в шагах сетки. В
противном случае размеры указываются в пикселях. Менеджер окон не
позволяет окну становиться больше, чем задано в команде.<br>
Если аргументы <i>width</i> и <i>height</i> заданы, команда
возвращает пустую строку, в противном случае она возвращает
список, содержащий два элемента: текущие ограничения на размер
окна. По умолчанию максимальные размеры окна равны размеру
экрана. Если изменение размеров окна запрещено с помощью команды
<b>wm <i></i>resizable</b>, команда <b>wmmaxsize</b> не влияет на
окно. Более подробно этот вопрос рассмотрен ниже
(см. <a href="Wm.html#УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ">Управление геометрией</a>.)</dt>
<dt><p><b>wm minsize</b> <i>window width height</i></<dt>>
<dt><br>Если аргументы <i>width</i> и <i>height</i>
заданы, они задают минимальный возможный размер окна. Если в окне
определена сетка, размеры указываются в шагах сетки. В противном
случае размеры указываются в пикселях. Менеджер окон не позволяет
окну становиться меньше, чем задано в команде.<br>
Если аргументы <i>width</i> и <i>height</i> заданы, команда
возвращает пустую строку, в противном случае она возвращает
список, содержащий два элемента: текущие ограничения на размер
окна. По умолчанию минимальные размеры окна равны одному пикселю
в каждом направлении. Если изменение размеров окна запрещено с
помощью команды <b>wm resizable</b>, команда <b>wm maxsize</b> не
влияет на окно. Более подробно этот вопрос рассмотрен ниже
(см. <a href="Wm.html#УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ">Управление геометрией</a>.).</dt>
<dt><p><b>wm overrideredirect</b> <i>window boolean</i></dt>
<dt><br>Если аргумент <i>boolean</i> задан, он должен
быть булевой величиной. Его значение присваивается
<i>override-redirect</i> флагу окна. Если аргумент не задан,
команда возвращает .1. или .0., в зависимости от того, установлен
ли флаг для <i>window</i>.<br>
Установка флага приводит к тому, что окно не управляется
менеджером окон. В частности, окно не будет заключено в
декоративную рамку и пользователь не сможет изменять размеры и
положение окна, используя стандартные механизмы менеджера
окон.</dt>
<p><b>wm positionfrom</b> <i>window who</i></p>
<dt><br>Если аргумент <i>who</i> задан, он должен иметь
одно из двух значений <b>program</b> или <b>user</b> (или
произвольное сокращение от одного из них). Оно определяет, будет
ли размещение окна определяться программой или пользователем.
Многие менеджеры окон игнорируют запрошенное программой начальное
размещение окна и требуют от пользователя разместить его вручную.
Если задано значение <b>user</b>, менеджер окон не требует этого
от пользователя. Если аргумент <i>who</i> задан как пустая
строка, текущая установка отменяется.<br>
Если аргумент <i>who</i> задан, команда возвращает пустую строку.
В противном случае команда возвращает установленное ранее
значение или пустую строку, если значение не было установлено.
Большинство менеджеров окон считают, что если .источник. не
задан, это то же самое, что <b>program</b>. Tk автоматически
устанавливает значение <b>user</b> при выполнении команды <b>wm
geometry</b>, если ранее не было установлено явно значение
<b>program</b><b>.</b></dt>
<dt><br><b>wm protocol</b> <i>window name command</i></dt>
<dt><br>Эта команда используется для организации
обработки сообщений (протоколов) менеджера окон, таких как
<b>WM_DELETE_WINDOW</b>. Аргумент name, если он задан, должен
быть именем элемента (атома) протокола менеджера окон. Если
заданы оба аргумента <i>name</i> и <i>command</i>, команда
<i>command</i> ассоциируется с протоколом <i>name</i>. Значение
<i>name</i> добавляется к свойству окна <b>WM_PROTOCOLS,</b>
чтобы указывать менеджеру окон, что приложение имеет обработчика
соответствующего сообщения, и какая команда должна быть выполнена
впоследствии, когда менеджер окон пошлет клиентской программе
соответствующее сообщение. В этом случае команда возвращает
пустую строку.
<br>Если аргумент <i>name</i> задан, а <i>command</i>
нет, будет возвращена команда, ассоциированная с данным
протоколом или пустая строка, если такой команды нет. Если
<i>command</i> определена как пустая строка, текущий обработчик
соответствующего события будет отменен, а имя протокола будет
удалено из свойства <b>PROTOCOLS</b> окна window. Команда
возвратит пустую строку.
<br>И наконец, если ни <i>name</i>, ни <i>command</i> не заданы,
команда возвратит список протоколов, для которых заданы
обработчики событий для данного окна.</dt>
<dt><br>Tk всегда определяет обработчик событий для протокола
<b>WM_DELETE_WINDOW</b>, даже если он не был задан с помощью
команды <b>wm protocol</b>. Если обработчик события не был задан
явно, то, когда поступает сообщение <b>WM_DELETE_WINDOW</b>, Tk
удаляет окно, для которого было получено это сообщение.</dt>
<dt><br><b>wm resizable</b> <i>window width height</i></dt>
<dt><br>Эта команда управляет возможностью пользователя
интерактивно изменять размеры окна. Если аргументы width и
<i>height</i> заданы, они должны быть булевыми величинами,
определяющими, может ли пользователь изменять в интерактивном
режиме ширину и высоту окна соответственно. Команда при этом
возвращает пустую строку. Если аргументы <i>width</i> и
<i>height</i> отсутствуют, команда возвращает список из двух
элементов, принимающих значение .0. или .1. и указывающих, может
ли пользователь изменять высоту и ширину окна соответственно. По
умолчанию пользователь может изменять размеры окна в обоих направлениях.
<p>Если изменение размеров окна пользователем запрещено, то либо
сохраняются те размеры окна, которые были получены в результате
последнего выполненного пользователем изменения размеров, либо
размеры окна устанавливаются с помощью команды <b>wm geometry</b>.
Если этих действий не было, используются размеры
окна, определяемые размерами составляющих его виджетов.
</dt>
<dt><br><b>wm sizefrom</b> <i>window ?who?</i></dt>
<dt><br>Если аргумент <i>who</i> задан, он должен иметь
одно из двух значений <b>program</b> или <b>user</b> (или
произвольное сокращение от одного из них). Оно определяет, будет
ли размер окна определяться программой или пользователем. Многие
менеджеры окон игнорируют запрошенный программой начальный размер
окна и требуют от пользователя определить его размер вручную.
Если задано значение user, менеджер окон не требует этого от
пользователя. Если аргумент <i>who</i> задан как пустая строка,
текущая установка отменяется.
<br>Если аргумент <i>who</i> задан, команда возвращает пустую
строку. В противном случае команда возвращает установленное ранее
значение; если значение не было установлено, команда возвращает
пустую строку. Большинство менеджеров окон считают, что если
.источник. не задан, это то же самое, что
<b>program</b>.
</dt>
<dt><br><b>wm state</b> <i>window</i></dt>
<dt><br>Команда возвращает текущее состояние окна:<br>
<b>normal</b><b>, iconic, withdrawn</b> или <b>icon</b>. Разница
между <b>iconic</b> и <b>icon</b> в том, что <b>iconic</b>
используется для свернутого окна (например, с помощью команды
<b>wm iconify</b> ), а <b>icon</b> для окна, которое используется
в качестве иконки для другого окна (с помощью команды <b>wm iconwindow</b>).
</dt>
<dt><br><b>wm title</b> <i>window string</i><dt>
<dt><br>Если аргумент <i>string</i> определен, он
передается менеджеру окон для использования в качестве имени
(титула) окна, которое менеджер окон высвечивает на рамке окна. В
этом случае команда возвращает рустую строку. Если аргумент
<i>string</i> не задан, команда возвращает ранее установленный
заголовок. По умолчанию титул окна совпадает с его полным именем как виджета.
</dt>
<dt><br><b>wm transient</b> <i>window master</i></dt>
<dt><br>Если аргумент <i>master</i> задан, команда
передает менеджеру окон информацию о том, что окно <i>window</i>
является временным окном (например, выпадающим меню), работающим
под управлением master-окна (где <i>master</i> полное имя
toplevel-окна). Некоторые менеджеры окон используют эту
информацию для того, чтобы управлять таким окном специальным
образом. Если аргумент <i>master</i> представляет собой пустую
строку, окно перестает быть временным окном.
<br>Если аргумент <i>master</i> задан, команда возвращает пустую
строку. В противном случае она возвращает имя управляющего окна
или пустую строку, если окно <i>window</i> не является временным.
</dt>
<dt><br><b>wm withdraw</b> <i>window</i></dt>
<dt><br>При выполнении команды окно <i>window</i>
удаляется с экрана. Информация о нем удаляется из менеджера окон.
Если окно не присутствовало на экране ранее, оно не появится на
экране при создании. Но не все менеджеры окон знают, как работать с такими окнами!
</dt>
<dt><br><b><i>Замечание.</i></b> Иногда оказывается необходимым удалить
окно с помощью команды <b>wm withdraw</b>, а затем возвратить его
обратно на экран (например, с помощью команды <b>wm deiconify</b>), чтобы менеджер окон учитывал некоторые его атрибуты, например, группу.
</dt>
</dl>
<p><a name="Wm УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ"></a><b>УПРАВЛЕНИЕ ГЕОМЕТРИЕЙ</b>
<p>По умолчанию toplevel-окна при появлении на
экране имеют размеры, определяемые размерами составляющих его
виджетов (.естественные. размеры). Если изменяются размеры или
состав виджетов, то изменяется и размер toplevel-окна. Для
toplevel-окна размеры, отличные от .естественных., могут быть
заданы двумя способами. Первый пользователь может изменить
размеры окна вручную, используя стандартные механизмы менеджера
окон. Второй приложение может запросить изменение размеров окна с
помощью команды <b>wm geometry</b>. Оба зти способа
обрабатываются в Tk единообразно. Размеры окна изменяются на
новые, отличные от .естественных.. Чтобы вернуть .естественные.
размеры окна, нужно выполнить команду <b>wm geometry</b> с пустой
строкой в качестве аргумента, задающего размеры и размещение окна.
<p>Обычно размеры окна могут изменяться произвольно в диапазоне
от 1 пикселя до размеров экрана. Однако, с помощью команд <b>wm
minsize</b> и <b>wm maxsize</b> можно изменить область
возможных размеров окна. Эти ограничения будут использоваться при
всех способах изменения размеров окна, в том числе и при ручном
изменении, и при изменении размеров и состава его виджетов,
приводящем к изменению его .естественных. размеров. С помощью
команды <b>wm resizable</b> можно полностью запретить изменение
размеров окна каким-либо способом в одном или в обоих направлениях.</p>
<p><a name="УПРАВЛЕНИЕ ОКНАМИ С СЕТКОЙ"></a><b>УПРАВЛЕНИЕ ОКНАМИ С СЕТКОЙ</b>
<p>Окна с сеткой используются, если один из виджетов
окна имеет ограниченное множество .разумных. размеров. Например,
в текстовом редакторе, где полосы прокрутки, меню и т. д. имеют
фиксированный размер, а поле редактирования текста может
содержать произвольное число строк или букв в строке. В этом
случае желательно дать пользователю возможность устанавливать
непосредственно число строк или букв в строке при изменении
размеров окна как вручную, так и с помощью команды <b>wm
geometry</b>. Как в случае с текстом, так и в других аналогичных,
.разумным. является не всякий размер окна в пикселях, а только
размеры, соответствующие целому числу строк или букв в строке.
<p>Введение сетки обеспечивает механизм для реализации этих
требований. Tk (и менеджер окон) предполагают существование сетки
в окне, и что .разумными. являются только размеры, выраженные в
целых шагах сетки, а не в произвольном числе пикселей. Обычно
сетка устанавливается с помощью опции <b>setGrid</b> для
соответствующего виджета. Она может также устанавливаться с
помощью команды <b>wm grid</b>. В любом случае с помощью виджета
или кода приложения определяются размеры окна в пикселях,
соответствующие целым размерам в шагах сетки. Чтобы отменить
сетку, нужно выполнить команду <b>wm grid</b> с пустой строкой, задающей сетку.</p>
<p>Если сетка задана, все определения размеров в командах
<b>wm minsize</b>, <b>wm maxsize</b> и <b>wm geometry</b>
считаются заданными в шагах сетки, а не в пикселях. Ручное
изменение размеров окна также производится в целых шагах сетки.</p>
<p><a name="ОШИБКИ"></a><b>ОШИБКИ</b>
<p>Как оказалось, большинство существующих менеджеров окон имеют некоторые ошибки, которые проявляются при выполнении команды <b>wm</b>. Например, некоторые изменения не производятся в окне, если оно активно. Окно должно быть выведено с экрана и возвращено обратно, чтобы изменения выполнились.
<p><a name="ПРИМЕР"></a><b>ПРИМЕР</b>
<dl>
<dt><b>wm geometry</b> <i>. 750x550+0+0</i> - устанавливает размер окна</dt>
<dt><b>wm title</b> <i>. "Tcl/Tk Project Manager"</i> - заголовок окна</dt>
<dt><b>wm iconname</b> <i>. "Tcl/Tk Project Manager"</i> - подпись для икнонки</dt>
<dt><b>wm protocol</b> <i>. wm_DELETE_WINDOW Quit</i> - процедура выполняема по закрытии окна</dt>
<dt><b>wm overrideredirect</b> <i>. 0</i></dt>
<dt><b>wm positionfrom</b> <i>. user</i> - установка позиции окна</dt>
<dt><b>wm resizable</b> <i>. 0 0</i> - установка атрибутов окна (в данном случае не изменяемое)</dt>
<dl>
</body>
</html>