419 lines
18 KiB
HTML
419 lines
18 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<html>
|
||
<head>
|
||
<title>grid</title>
|
||
</head>
|
||
<body>
|
||
<h1>grid</h1>
|
||
|
||
<p>Геометрический менеджер, который размещает виджеты в ячейках
|
||
сетки.</p>
|
||
|
||
|
||
<h2><a name="СИНТАКСИС"></a>СИНТАКСИС</h2>
|
||
|
||
<pre>
|
||
<strong>grid</strong> <em>option arg</em> ?<em>arg ...</em>?
|
||
</pre>
|
||
|
||
<h2><a name="ОПИСАНИЕ"></a>ОПИСАНИЕ</h2>
|
||
|
||
<p>Команда <strong>grid</strong> используется для управления
|
||
соответствующим геометрическим менеджером, размещающим виджеты по
|
||
ячейкам сетки, и для получения от него справочной информации.
|
||
Команда может иметь перечисленные ниже формы в зависимости от
|
||
значения аргумента <em>option</em>.</p>
|
||
|
||
<dl>
|
||
<dt><strong>grid</strong> <em>slave</em> ?<em>slave</em> ...?
|
||
?<em>options</em>?</dt>
|
||
|
||
<dd>Если первый аргумент команды является именем окна (любая
|
||
величина, начинающаяся с ".", команда выполняется точно
|
||
также, как команда <strong>grid configure</strong>.</dd>
|
||
|
||
<dt><strong>grid bbox</strong> <em>master</em> ?<em>column
|
||
row</em>? ?<em>column2 row2</em>?</dt>
|
||
|
||
<dd>Без аргументов команда возвращает размер ограничивающего
|
||
прямоугольника для сетки (в пикселях). Возвращаемая величина
|
||
состоит из четырех чисел. Первые два представляют собой
|
||
расстояние от границы окна до левого верхнего угла
|
||
сетки. Следующие два числа представляют ширину и высоту
|
||
сетки. Если указана единственная колонка и строка,
|
||
возвращается ограничивающий прямоугольник для соответствующей
|
||
ячейки сетки (счет слева сверху, начиная с нуля). Если
|
||
указаны два набора колонок и строк, то возвращается размер
|
||
прямоугольника, ограничивающего соответствующую область
|
||
сетки.</dd>
|
||
|
||
<dt><strong>grid configure</strong> <em>master index</em> ?<em>-option
|
||
value...</em>?</dt>
|
||
|
||
<dd><p>Запрашивает или устанавливает свойства колонки для колонки
|
||
сетки номер <em>index</em>. Допустимые опции
|
||
<strong>-minsize</strong>, <strong>-weight</strong> и
|
||
<strong>-pad</strong>. Если одна или более опций указаны,
|
||
<em>index</em> может быть списком номеров колонок, для которых
|
||
соответствующие значения опций должны быть установлены.</p>
|
||
|
||
<p>Опция <strong>-minsize</strong> устанавливает минимальный
|
||
размер колонки на экране.</p>
|
||
|
||
<p>Опция <strong>-weight</strong> (допустимые значения целые
|
||
числа) устанавливает относительный вес, используемый при
|
||
распределении свободного пространства между
|
||
колонками. Нулевой вес указывает, что колонка не будет
|
||
расширяться. Колонка с весом 2 будет расти вдвое быстрее,
|
||
чем колонка с весом 1.</p>
|
||
|
||
<p>Опция <strong>-pad</strong> определяет размер полей,
|
||
которые будут добавлены к размерам максимального окна в
|
||
колонке при определении необходимой ширины колонки.</p>
|
||
|
||
<p>Если в команде указана опция, а ее величина отсутствует,
|
||
команда возвращает установленное значение данной опции. Если
|
||
не указана ни одна опция, команда возвращает список опций и
|
||
их значений в той же форме, в какой они задаются.</p>
|
||
</dd>
|
||
|
||
<dt><strong>grid configure</strong> <em>slave</em> ?<em>slave ...</em>?
|
||
?<em>options</em>?</dt>
|
||
|
||
<dd><p>Аргумент(ы) <em>slave</em> представляют собой имена
|
||
виджетов, которые размещаются в ячейках сетки. За ними следуют
|
||
пары аргументов, состоящие из имен опций и их значений,
|
||
которые управляют размещением виджетов. Символы "-",
|
||
"x" и "^" могут использоваться вместо имен
|
||
виджетов, чтобы изменить их типовое размещение (детально
|
||
правила использования этих символов описано ниже (см. "<a
|
||
href= "#ОТНОСИТЕЛЬНОЕ_РАЗМЕЩЕНИЕ">Относительное
|
||
размещение</a>"). Допустимые имена опций:</p>
|
||
|
||
<dl>
|
||
<dt><strong>-column <em>n</em></strong></dt>
|
||
|
||
<dd>Вставляет виджет в <em>n</em>-ую колонку сетки. Номера
|
||
колонок начинаются с нуля. Если опция не указана, виджет
|
||
вставляется правее предыдущего виджета, вставленного той
|
||
же командой <strong>grid</strong>, или в колонку
|
||
"0", если это первый виджет в команде. Для
|
||
каждого символа "x" непосредственно перед
|
||
именем виджета номер колонки увеличивается на 1. То есть
|
||
"x" представляет пустую колонку в текущем ряду
|
||
сетки.</dd>
|
||
|
||
<dt><strong>-columnspan <em>n</em></strong></dt>
|
||
|
||
<dd>Вставляет виджет таким образом, что он занимает
|
||
<em>n</em> колонок сетки. По умолчанию виджет занимает
|
||
одну колонку, если только после имени виджета не идет
|
||
символ "-". В этом случае каждый последующий
|
||
символ "-" увеличивает на единицу величину
|
||
<strong>columnspan</strong>.</dd>
|
||
|
||
<dt><strong>-in</strong> <em>other</em></dt>
|
||
|
||
<dd>Вставляет виджет(ы) в мастер-окно <em>other</em>. По
|
||
умолчанию виджет вставляется в непосредственного
|
||
предка.</dd>
|
||
|
||
<dt><strong>-ipadx</strong> <em>amount</em></dt>
|
||
|
||
<dd>Аргумент <em>amount</em> определяет горизонтальные
|
||
внутренние поля, которые вставляются в виджет(ы). Эти поля
|
||
вставляются внутри границы виджета. Размер должен быть
|
||
указан в одной из форм, в которой можно задавать размеры
|
||
на экране, например, <strong> 2</strong> (2 пикселя) или
|
||
<strong>.5c</strong> (0.5 сантиметра). Значение по
|
||
умолчанию "0".</dd>
|
||
|
||
<dt><strong>-ipady</strong> <em>amount</em></dt>
|
||
|
||
<dd>Аргумент <em>amount</em> определяет вертикальные
|
||
внутренние поля, которые вставляются в виджет(ы). Эти поля
|
||
вставляются внутри границы виджета. Размер должен быть
|
||
указан в одной из форм, в которой можно задавать размеры
|
||
на экране, например, <strong>2</strong> (2 пикселя) или
|
||
<strong>.5c</strong> (0.5 сантиметра). Значение по
|
||
умолчанию "0".</dd>
|
||
|
||
<dt><strong>-padx</strong> <em>amount</em></dt>
|
||
|
||
<dd>Аргумент <em>amount</em> определяет горизонтальные
|
||
внешние поля, которые вставляются в виджет(ы). Эти поля
|
||
вставляются вне границы виджета. Размер должен быть указан
|
||
в одной из форм, в которой можно задавать размеры на
|
||
экране, например, <strong>2</strong> (2 пикселя) или
|
||
<strong>.5c</strong> (0.5 сантиметра). Значение по
|
||
умолчанию "0".</dd>
|
||
|
||
<dt><strong>-pady</strong> <em>amount</em></dt>
|
||
|
||
<dd>Аргумент <em>amount</em> определяет вертикальные внешние
|
||
поля, которые вставляются в виджет(ы). Эти поля
|
||
вставляются вне границы виджета. Размер должен быть указан
|
||
в одной из форм, в которой можно задавать размеры на
|
||
экране, например, <strong>2</strong> (2 пикселя) или
|
||
<strong>.5c</strong> (0.5 сантиметра). Значение по
|
||
умолчанию "0".</dd>
|
||
|
||
<dt><strong>-row</strong> <em>n</em></dt>
|
||
|
||
<dd>Вставляет виджет в <em>n</em>-ную строку сетки. Номера
|
||
строк считаются с нуля. Если опция не указана, виджет
|
||
вставляется в ту же строку, что и предыдущий виджет в
|
||
данной команде <strong> grid</strong>, или в первую
|
||
свободную строку, если это правый виджет в команде.</dd>
|
||
|
||
<dt><strong>-rowspan</strong> <em>n</em></dt>
|
||
|
||
<dd>Вставляет виджет таким образом, чтобы он занимал
|
||
<em>n</em> строк. Значение по умолчанию
|
||
"1". Если в следующей команде grid содержится
|
||
символ "^", то он означает, что виджет,
|
||
находящийся в этом же столбце в предыдущей строке, должен
|
||
быть расширен еще на одну строку вниз.</dd>
|
||
|
||
<dt><strong>-sticky</strong> <em>style</em></dt>
|
||
|
||
<dd>Если виджет меньше размеров ячейки сетки, опция
|
||
позволяет разместить (или растянуть) виджет внутри
|
||
ячейки. Аргумент <em>style</em> является строкой,
|
||
содержащей одну или несколько из букв <strong>n</strong>,
|
||
<strong>s</strong>, <strong>e</strong> или
|
||
<strong>w</strong>. Строка может содержать пробелы или
|
||
запятые, но они игнорируются. Каждая из букв означает
|
||
одну из сторон ячейки, к которой виджет будет
|
||
"приклеен". Если в строке содержатся символы для
|
||
двух противоположных сторон, например, <strong>n</strong>
|
||
и <strong>s</strong> (или <strong>e</strong> и
|
||
<strong>w</strong>), виджет будет увеличен таким образом,
|
||
чтобы заполнить всю высоту (или ширину) ячейки. Таким
|
||
образом опция <strong>-sticky</strong> заменяет сразу
|
||
опции <strong>-anchor</strong> и <strong>-fill</strong>
|
||
для менеджера <strong>pack</strong>. Значение по умолчанию
|
||
пустая строка, которая означает, что виджет будет размещен
|
||
в центре ячейки и будет иметь свой естественный
|
||
размер.</dd>
|
||
</dl>
|
||
|
||
<p>Если какой-либо из виджетов, перечисленных в команде, уже
|
||
размещен в сетке, а в команде для него указаны не все
|
||
возможные опции, для остальных опций используются предыдущие
|
||
значения, а не значения по умолчанию.</p>
|
||
</dd>
|
||
|
||
<dt><strong>grid forget</strong> <em>slave</em> ?<em>slave ...</em>?</dt>
|
||
|
||
<dd>Удаляет виджет(ы) из сетки и с экрана. Они больше не
|
||
управляются менеджером <strong>grid</strong>. Значения опций
|
||
для удаляемых виджетов не сохраняются, так что если виджет
|
||
будет через некоторое время помещен в сетку, для него будут
|
||
использоваться значения опций по умолчанию.</dd>
|
||
|
||
<dt><strong>grid info</strong> <em>slave</em></dt>
|
||
|
||
<dd>Возвращает список опций и их значений для окна slave в той
|
||
же форме, в какой они задаются в команде <strong>grid
|
||
configure</strong>. Первые два элемента списка
|
||
"<strong>-in</strong> <em>master</em>", где
|
||
"<em>master</em>" имя окна, в котором размещается
|
||
<em>slave</em>.</dd>
|
||
|
||
<dt><strong>grid</strong> <em>location</em> <strong>master x
|
||
y</strong></dt>
|
||
|
||
<dd>Аргументы <em>x</em> и <em>y</em> должны быть координатами в
|
||
системе координат мастер окна. Команда возвращает номер
|
||
колонки и строки, в которой находится точка с координатами
|
||
<em>x</em> и <em>y</em>. Если она расположена выше или левее
|
||
сетки, возвращается "-1".</dd>
|
||
|
||
<dt><strong>grid propagate</strong> <em>master</em>
|
||
?<em>boolean</em>?</dt>
|
||
|
||
<dd>Аргумент <em>boolean</em>, если он задан, определяет, будет
|
||
ли окно <em>master</em> расширяться при необходимости
|
||
(подробное описание опции см. "<a
|
||
href="#РАСПРОСТРАНЕНИЕ_РАЗМЕРОВ">Распространение
|
||
размеров</a>"). Команда при этом возвращает пустую
|
||
строку. Если аргумент не задан, команда возвращает текущее
|
||
значение опции (<strong>0</strong> или <strong>1</strong>). По
|
||
умолчанию расширение разрешено.</dd>
|
||
|
||
<dt><strong>grid rowconfigure</strong> <em>master index</em>
|
||
?<em>-option value...</em>?</dt>
|
||
|
||
<dd><p>Запрашивает или устанавливает свойства строки для строки
|
||
сетки номер <em>index</em>. Допустимые опции
|
||
<strong>-minsize</strong>, <strong>-weight</strong> и
|
||
<strong>-pad</strong>. Если одна или более опций указаны,
|
||
<em>index</em> может быть списком номеров строк, для которых
|
||
соответствующие значения опций должны быть установлены.</p>
|
||
|
||
<p>Опция <strong>-minsize</strong> устанавливает минимальный
|
||
размер строки на экране.</p>
|
||
|
||
<p>Опция <strong>-weight</strong> (допустимые значения целые
|
||
числа) устанавливает относительный вес, используемый при
|
||
распределении свободного пространства между
|
||
строками. Нулевой вес указывает, что строка не будет
|
||
расширяться. Строка с весом 2 будет расти вдвое быстрее, чем
|
||
строка с весом 1.</p>
|
||
|
||
<p>Опция <strong>-pad</strong> определяет размер полей,
|
||
которые будут добавлены к размерам максимального окна в
|
||
строке при определении необходимой ширины колонки.</p>
|
||
|
||
<p>Если в команде указана опция, а ее величина отсутствует,
|
||
команда возвращает установленное значение данной опции. Если
|
||
не указана ни одна опция, команда возвращает список опций и
|
||
их значений в той же форме, в какой они задаются.</p>
|
||
</dd>
|
||
|
||
<dt><strong>grid remove</strong> <em>slave</em> ?<em>slave
|
||
...</em>?</dt>
|
||
|
||
<dd>Удаляет виджет(ы) из сетки и с экрана. Они больше не
|
||
управляются менеджером <strong>grid</strong>. Однако, значения
|
||
опций для них сохраняются, так что если виджет будет через
|
||
некоторое время помещен в сетку, для него будут использоваться
|
||
прежние значения опций.</dd>
|
||
|
||
<dt><strong>grid size</strong> <em>master</em></dt>
|
||
|
||
<dd>Возвращает размер сетки (в колонках и строках) для окна
|
||
<em>master</em>. Размер определяется наибольшим номером строки
|
||
или столбца, в которых размещен виджет или задано ненулевое
|
||
значение одной из опций <strong>-minsize</strong>,
|
||
<strong>-weight</strong> или <strong>-pad</strong>.</dd>
|
||
|
||
<dt><strong>grid slaves</strong> <em>master</em> ?<em>-option
|
||
value</em>?</dt>
|
||
|
||
<dd>Если опции не заданы, возвращает список всех виджетов,
|
||
размещенных в сетке (размещенные позже в списке стоят раньше).
|
||
Допустимые опции <strong>-row</strong> и
|
||
<strong>-column</strong>. Если они указаны, команда
|
||
возвращает список виджетов, размещенных в соответствующей
|
||
строке или столбце.</dd>
|
||
</dl>
|
||
|
||
<h2><a name="ОТНОСИТЕЛЬНОЕ_РАЗМЕЩЕНИЕ"></a>ОТНОСИТЕЛЬНОЕ РАЗМЕЩЕНИЕ</h2>
|
||
|
||
<p>Команда <strong>grid</strong> содержит ограниченный набор
|
||
возможностей для размещения виджетов без явного указания строк и
|
||
колонок для каждого. Если номер строки или колонки не указан
|
||
явно, он рассчитывается в момент размещения виджета исходя из
|
||
текущего заполнения сетки, позиции виджета относительно других
|
||
виджетов и наличия в команде специальных символов "-",
|
||
"x" и "^" вместо имен виджетов.</p>
|
||
|
||
<dl>
|
||
<dt><strong>-</strong></dt>
|
||
|
||
<dd>Этот символ увеличивает значение опции
|
||
<strong>-columnspan</strong> для виджета слева. Несколько
|
||
символов "-" подряд означают последовательное
|
||
увеличение значения опции <strong>-columnspan</strong>. Символ
|
||
"-" не может стоять после "^" или
|
||
"x".</dd>
|
||
|
||
<dt><strong>x</strong></dt>
|
||
|
||
<dd>Этот символ оставляет пустую колонку между виджетом слева и
|
||
виджетом справа.</dd>
|
||
|
||
<dt><strong>^</strong></dt>
|
||
|
||
<dd>Этот символ увеличивает значение опции
|
||
<strong>-rowspan</strong> для виджета в соответствующей
|
||
колонке предыдущей строки. Число и расположение символов
|
||
<strong>^</strong> в строке должно соответствовать числу и
|
||
расположению расширяемых виджетов в предыдущей строке.</dd>
|
||
</dl>
|
||
|
||
<h2><a name="АЛГОРИТМ_РАЗМЕЩЕНИЯ_GRID"></a>АЛГОРИТМ РАЗМЕЩЕНИЯ grid</h2>
|
||
|
||
<p>Геометрический менеджер <strong>grid</strong> размещает виджеты
|
||
в окне в три шага. На первом шаге определяются минимальные
|
||
размеры, необходимые для размещения всех виджетов и (если
|
||
распространение размеров разрешено) формируется запрос на
|
||
изменение размеров мастер-окна. На втором шаге необходимые
|
||
размеры сравниваются с реальными размерами мастер-окна. Если они
|
||
не совпадают, то размеры виджетов пересчитываются
|
||
соответствующим образом. На третьем шаге каждый виджет
|
||
размещается в своей колонке (колонках) и строке (строках) в
|
||
соответствии со значением опции <strong>-sticky</strong>.</p>
|
||
|
||
<p>Чтобы определить минимальные размеры, необходимые для колонок и
|
||
строк, геометрический менеджер сначала рассматривает те виджеты,
|
||
у которых значения обеих опций <strong>-columnspan</strong> и
|
||
<strong>-rowspan</strong> равны "1", рассчитывает их
|
||
размер и определяет минимальный размер колонок и строк как
|
||
максимум из соответствующих размеров размещаемых в них виджетов
|
||
(включая поля) и значения соответствующей опции
|
||
<strong>-minsize</strong>. После этого рассматриваются виджеты
|
||
со значением опции <strong>-columnspan</strong> или
|
||
<strong>-rowspan</strong> больше единицы. Если отведенная группа
|
||
колонок или строк мала для такого виджета, тогда дополнительный
|
||
размер распределяется между членами группы пропорционально
|
||
значениям их опций <strong>-weight</strong>. Если все члены
|
||
группы имеют нулевой вес, они получают одинаковое приращение
|
||
размеров.</p>
|
||
|
||
<p>Для мастер окон, размер которых оказался больше необходимого,
|
||
дополнительное пространство распределяется пропорционально весам
|
||
колонок и строк соответственно. Если все веса нулевые, виджеты
|
||
размещаются в центре мастер-окна. Если размер мастер-окна меньше
|
||
необходимого, то размеры колонок и строк уменьшаются
|
||
пропорционально их весам. Однако, если размер колонки или строки
|
||
уменьшился до значения соответствующей опции
|
||
<strong>-minsize</strong>, ее вес считается равным нулю. Если
|
||
все строки или колонки уменьшены до размеров, равных значениям
|
||
опций <strong>-minsize</strong>, и требуется дальнейшее
|
||
уменьшение размеров, группа виджетов обрезается справа и
|
||
снизу.</p>
|
||
|
||
<h2><a name="РАСПРОСТРАНЕНИЕ_РАЗМЕРОВ"></a>РАСПРОСТРАНЕНИЕ РАЗМЕРОВ</h2>
|
||
|
||
<p>Обычно менеджер рассчитывает размеры мастер-окна, необходимые
|
||
для размещения виджетов, и, при необходимости, устанавливает
|
||
размеры мастер окна таким образом, чтобы в нем в точности
|
||
поместились все необходимые виджеты. Это приводит к тому, что
|
||
информация о размерах виджетов распространяется по
|
||
иерархическому дереву виджетов, в результате чего целое
|
||
поддерево изменяет свои размеры при изменении одного из
|
||
листьевых элементов. Однако, команда <strong>grid
|
||
propagate</strong> может быть использована для отключения этого
|
||
механизма для одного или нескольких мастер-окон. Если
|
||
распространение размеров отключено, информация о необходимых
|
||
размерах не передается мастер-окну. Это может оказаться
|
||
полезным, если вы хотите, чтобы мастер-окно сохраняло те
|
||
размеры, которые вы определили.</p>
|
||
|
||
<h2><a name="ОГРАНИЧЕНИЯ_НА_МАСТЕРОКНА"></a>ОГРАНИЧЕНИЯ НА МАСТЕР-ОКНА</h2>
|
||
|
||
<p>Мастер-окно для каждого размещаемого виджета должно быть его
|
||
непосредственным предком (по умолчанию) или одним из потомков
|
||
его предка. Это ограничение гарантирует разумное поведение
|
||
виджетов при удалении toplevel-окон.</p>
|
||
|
||
<h2><a name="ПОРЯДОК_РАЗМЕЩЕНИЯ"></a>ПОРЯДОК РАЗМЕЩЕНИЯ</h2>
|
||
|
||
<p>Если мастер-окно для виджета не является его непосредственным
|
||
предком, необходимо быть уверенным, что виджет лежит в стеке
|
||
окон выше, чем мастер-окно. В противном случае мастер-окно
|
||
закроет собой виджет и создастся впечатление, что виджет не
|
||
упакован правильным образом. Простейший способ избежать подобных
|
||
проблем следить, чтобы мастер-окно было создано раньше, чем
|
||
виджет: чем позже создано окно, тем выше оно в стеке. Если это
|
||
почему-либо неудобно, можно использовать команды <a
|
||
href="raise.html"><strong>raise</strong></a> и <a
|
||
href="lower.html"><strong>lower</strong></a> для изменения
|
||
порядка окон в стеке.</p>
|
||
</body>
|
||
</html>
|
||
|