pack append parent окно параметры? окно параметры...?
pack before sibling окно параметры? окно параметры...?
pack unpack окно
Упаковщик представляет собой геометрический менеджер, предназначенный для размещения непосредственных потомков примитива по сторонам примитива в порядке их появления. Первый потомок размещается вдоль одной стороны примитива, занимая всю протяженность окна вдоль этой стороны. В результате, для следующих потомков остается усеченное окно, как если бы выбранная сторона сдвинулась внутрь на размер первого потомка. Вдоль одной из сторон оставшейся области размещается второй потомок, и так далее до тех пор, пока не будут размещены все потомки или пока не исчерпается свободное место.
Формы before , after и append команды pack используются для вставки одного или нескольких непосредственных потомков в очередь упаковки их родителя. В форме before команда вставляет окно-потомка перед родственными узлами; все остальные окна должны быть узлами одного уровня. В форме after окна вставляются после родственных узлов, а в форме append добавляет одно или несколько окон к очереди упаковки их родителя. Если окно, указанное в любой из этих команд уже упаковано в родительское окно, то оно удаляется со своего текущего положения в порядке упаковки и перемещается в соответствии с командой. Все эти команды возвращают в качестве результата пустую строку.
Форма unpack команды pack command удаляет окно из очереди упаковки его родителя и стирает его с экрана. После выполнения этой команды упаковщик более не управляет геометрией окна.
На самом деле, размещение каждого потомка представляет собой четырехступенчатую процедуру; значение параметра, следующего за окном, представляет собой список из одного или нескольких полей, управляющих размещением окна. В нижеследующем обсуждении термин "полость" (cavity) обозначает место в окне-родителе, оставшееся после размещения конкретного потомка (т.е. все то место, которое не было запрошено при размещении предыдущих потомков в очереди). Термин "доля" (parcel) обозначает количество места, отведенного конкретному потомку; это количество не обязательно соответствует окончательной геометрии окна-потомка.
Первый шаг в размещении потомка состоит в выборе стороны полости, вдоль которой он будет располагаться. Для указания стороны можно пользоваться любым из следующих параметров:
top
Для каждого окна следует задать ровно один из этих параметров. Значением стороны по умолчанию является top. Второй шаг состоит в определнии доли потомка. Для верхнего и нижнего окон желательная ширина доли обычно совпадает с шириной полости, а желательная высота совпадает с запрошенной высотой доли, которая передается команде Tk_GeometryRequest. Для левого и правого окон желательная высота доли обычно совпадает с высотой полости, а желательная ширина совпадает с запрошенной шириной доли. Однако с помощью каждого из описанных ниже параметров для окна можно запросить дополнительное место:
На третьем шаге размещения окна следует принять решение о его ширине и высоте. По умолчанию окно получает либо запрошенные ширину и высоту, либо ширину и высоту доли - в зависимости от того, что из них меньше. Если доля больше, чем запрошенный размер окна, то окно можно расширить так, чтобы оно полностью или частично покрывало долю, с помощью следующих параметров:
fill
frame center
Упаковщик посылает геометрические запросы от имени родителя размещаемых окон. Для каждого окна-родителя он запрашивает размер, достаточный для размещения всех упакованных потомков в соответствии с указанными параметрами, так что на расширение остается нулевой остаток.