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

420 lines
28 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>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>Если первый аргумент команды является именем окна (любая
величина, начинающаяся с &quot;.&quot;, команда выполняется точно
также, как команда <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> представляют собой имена
виджетов, которые размещаются в ячейках сетки. За ними следуют
пары аргументов, состоящие из имен опций и их значений,
которые управляют размещением виджетов. Символы &quot;-&quot;,
&quot;x&quot; и &quot;^&quot; могут использоваться вместо имен
виджетов, чтобы изменить их типовое размещение (детально
правила использования этих символов описано ниже (см. &quot;<a
href= #ОТНОСИТЕЛЬНОЕ_РАЗМЕЩЕНИЕ>Относительное
размещение</a>&quot;). Допустимые имена опций:</p>
<dl>
<dt><strong>-column <em>n</em></strong></dt>
<dd>Вставляет виджет в <em>n</em>-ую колонку сетки. Номера
колонок начинаются с нуля. Если опция не указана, виджет
вставляется правее предыдущего виджета, вставленного той
же командой <strong>grid</strong>, или в колонку
&quot;0&quot;, если это первый виджет в команде. Для
каждого символа &quot;x&quot; непосредственно перед
именем виджета номер колонки увеличивается на 1. То есть
&quot;x&quot; представляет пустую колонку в текущем ряду
сетки.</dd>
<dt><strong>-columnspan <em>n</em></strong></dt>
<dd>Вставляет виджет таким образом, что он занимает
<em>n</em> колонок сетки. По умолчанию виджет занимает
одну колонку, если только после имени виджета не идет
символ &quot;-&quot;. В этом случае каждый последующий
символ &quot;-&quot; увеличивает на единицу величину
<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 сантиметра). Значение по
умолчанию &quot;0&quot;.</dd>
<dt><strong>-ipady</strong> <em>amount</em></dt>
<dd>Аргумент <em>amount</em> определяет вертикальные
внутренние поля, которые вставляются в виджет(ы). Эти поля
вставляются внутри границы виджета. Размер должен быть
указан в одной из форм, в которой можно задавать размеры
на экране, например, <strong>2</strong> (2 пикселя) или
<strong>.5c</strong> (0.5 сантиметра). Значение по
умолчанию &quot;0&quot;.</dd>
<dt><strong>-padx</strong> <em>amount</em></dt>
<dd>Аргумент <em>amount</em> определяет горизонтальные
внешние поля, которые вставляются в виджет(ы). Эти поля
вставляются вне границы виджета. Размер должен быть указан
в одной из форм, в которой можно задавать размеры на
экране, например, <strong>2</strong> (2 пикселя) или
<strong>.5c</strong> (0.5 сантиметра). Значение по
умолчанию &quot;0&quot;.</dd>
<dt><strong>-pady</strong> <em>amount</em></dt>
<dd>Аргумент <em>amount</em> определяет вертикальные внешние
поля, которые вставляются в виджет(ы). Эти поля
вставляются вне границы виджета. Размер должен быть указан
в одной из форм, в которой можно задавать размеры на
экране, например, <strong>2</strong> (2 пикселя) или
<strong>.5c</strong> (0.5 сантиметра). Значение по
умолчанию &quot;0&quot;.</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> строк. Значение по умолчанию
&quot;1&quot;. Если в следующей команде grid содержится
символ &quot;^&quot;, то он означает, что виджет,
находящийся в этом же столбце в предыдущей строке, должен
быть расширен еще на одну строку вниз.</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>. Строка может содержать пробелы или
запятые, но они игнорируются. Каждая из букв означает
одну из сторон ячейки, к которой виджет будет
&quot;приклеен&quot;. Если в строке содержатся символы для
двух противоположных сторон, например, <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>. Первые два элемента списка
&quot;<strong>-in</strong> <em>master</em>&quot;, где
&quot;<em>master</em>&quot; имя окна, в котором размещается
<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>. Если она расположена выше или левее
сетки, возвращается &quot;-1&quot;.</dd>
<dt><strong>grid propagate</strong> <em>master</em>
?<em>boolean</em>?</dt>
<dd>Аргумент <em>boolean</em>, если он задан, определяет, будет
ли окно <em>master</em> расширяться при необходимости
(подробное описание опции см. &quot;<a
href=#РАСПРОСТРАНЕНИЕ_РАЗМЕРОВ>Распространение
размеров</a>&quot;). Команда при этом возвращает пустую
строку. Если аргумент не задан, команда возвращает текущее
значение опции (<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> содержит ограниченный набор
возможностей для размещения виджетов без явного указания строк и
колонок для каждого. Если номер строки или колонки не указан
явно, он рассчитывается в момент размещения виджета исходя из
текущего заполнения сетки, позиции виджета относительно других
виджетов и наличия в команде специальных символов &quot;-&quot;,
&quot;x&quot; и &quot;^&quot; вместо имен виджетов.</p>
<dl>
<dt><strong>-</strong></dt>
<dd>Этот символ увеличивает значение опции
<strong>-columnspan</strong> для виджета слева. Несколько
символов &quot;-&quot; подряд означают последовательное
увеличение значения опции <strong>-columnspan</strong>. Символ
&quot;-&quot; не может стоять после &quot;^&quot; или
&quot;x&quot;.</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> равны &quot;1&quot;, рассчитывает их
размер и определяет минимальный размер колонок и строк как
максимум из соответствующих размеров размещаемых в них виджетов
(включая поля) и значения соответствующей опции
<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>