dwww Home | Manual pages | Find package

pack(3tk)                    Tk Built-In Commands                    pack(3tk)

______________________________________________________________________________

NAME
       pack - Geometry manager that packs around edges of cavity

SYNOPSIS
       pack option arg ?arg ...?
______________________________________________________________________________

DESCRIPTION
       The  pack  command  is  used to communicate with the packer, a geometry
       manager that arranges the children of a parent by packing them in order
       around  the edges of the parent.  The pack command can have any of sev-
       eral forms, depending on the option argument:

       pack window ?window ...? ?options?
              If the first argument to pack is a window name (any value start-
              ing  with “.”), then the command is processed in the same way as
              pack configure.

       pack configure window ?window ...? ?options?
              The arguments consist of the names of one or more  content  win-
              dows  followed  by pairs of arguments that specify how to manage
              the content.  See THE PACKER ALGORITHM below for details on  how
              the  options  are used by the packer.  The following options are
              supported:

              -after other
                     Other must the name of another window.  Use its container
                     as  the container for the content, and insert the content
                     just after other in the packing order.

              -anchor anchor
                     Anchor must be a valid anchor position such as n  or  sw;
                     it  specifies  where to position each content in its par-
                     cel.  Defaults to center.

              -before other
                     Other must the name of another window.  Use its container
                     as  the container for the content, and insert the content
                     just before other in the packing order.

              -expand boolean
                     Specifies whether the content should be expanded to  con-
                     sume  extra  space  in their container.  Boolean may have
                     any proper boolean value, such as 1 or no.   Defaults  to
                     0.

              -fill style
                     If a content's parcel is larger than its requested dimen-
                     sions, this option may be used to  stretch  the  content.
                     Style must have one of the following values:

                     none   Give the content its requested dimensions plus any
                            internal padding requested with -ipadx or  -ipady.
                            This is the default.

                     x      Stretch  the  content horizontally to fill the en-
                            tire width of its parcel  (except  leave  external
                            padding as specified by -padx).

                     y      Stretch  the content vertically to fill the entire
                            height of its parcel (except leave  external  pad-
                            ding as specified by -pady).

                     both   Stretch  the  content both horizontally and verti-
                            cally.

              -in container
                     Insert the window at the end of the packing order for the
                     container window given by container.

              -ipadx amount
                     Amount  specifies how much horizontal internal padding to
                     leave on each side of the  content.   Amount  must  be  a
                     valid  screen distance, such as 2 or .5c.  It defaults to
                     0.

              -ipady amount
                     Amount specifies how much vertical  internal  padding  to
                     leave  on  each side of the content.  Amount  defaults to
                     0.

              -padx amount
                     Amount specifies how much horizontal external padding  to
                     leave  on each side of the content.  Amount may be a list
                     of two values to specify padding for left and right sepa-
                     rately.  Amount defaults to 0.

              -pady amount
                     Amount  specifies  how  much vertical external padding to
                     leave on each side of the content.  Amount may be a  list
                     of two values to specify padding for top and bottom sepa-
                     rately.  Amount defaults to 0.

              -side side
                     Specifies which side of the container the content will be
                     packed  against.   Must  be  left, right, top, or bottom.
                     Defaults to top.

              If no -in, -after or -before option is specified  then  each  of
              the  content will be inserted at the end of the packing list for
              its parent unless it is already managed by the packer (in  which
              case  it  will be left where it is).  If one of these options is
              specified then all the content will be inserted at the specified
              point.   If any of the content are already managed by the geome-
              try manager then any unspecified options for them  retain  their
              previous values rather than receiving default values.

       pack forget window ?window ...?
              Removes  each of the windows from the packing order for its con-
              tainer and unmaps their windows.  The content will no longer  be
              managed by the packer.

       pack info window
              Returns  a  list  whose  elements  are the current configuration
              state of the window given by window  in  the  same  option-value
              form  that  might be specified to pack configure.  The first two
              elements of the list are “-in container” where container is  the
              window's container.

       pack propagate container ?boolean?
              If  boolean has a true boolean value such as 1 or on then propa-
              gation is enabled for container, which must  be  a  window  name
              (see  GEOMETRY PROPAGATION below).  If boolean has a false bool-
              ean value then propagation is disabled for container.  In either
              of these cases an empty string is returned.  If boolean is omit-
              ted then the command returns 0 or 1 to indicate whether propaga-
              tion is currently enabled for container.  Propagation is enabled
              by default.

       pack slaves window
              Returns a list of all of the content windows in the packing  or-
              der for window.  The order of the content windows in the list is
              the same as their order in the packing order.  If window has  no
              content then an empty string is returned.                        │

       pack content window                                                     │
              Synonym for pack slaves window.

THE PACKER ALGORITHM
       For each container the packer maintains an ordered list of content win-
       dows called the packing list.  The -in, -after, and -before  configura-
       tion options are used to specify the container for each content and the
       content's position in the packing list.  If none of  these  options  is
       given for a content then the content is added to the end of the packing
       list for its parent.

       The packer arranges the content windows for a container by scanning the
       packing  list  in order.  At the time it processes each content, a rec-
       tangular area within the container is still unallocated.  This area  is
       called  the cavity;  for the first content it is the entire area of the
       container.

       For each content the packer carries out the following steps:

       [1]    The packer allocates a rectangular parcel for the content  along
              the  side of the cavity given by the content's -side option.  If
              the side is top or bottom then the width of the  parcel  is  the
              width  of  the  cavity and its height is the requested height of
              the content plus the -ipady and -pady options.  For the left  or
              right  side the height of the parcel is the height of the cavity
              and the width is the requested width of  the  content  plus  the
              -ipadx  and  -padx  options.  The parcel may be enlarged further
              because of the -expand option (see EXPANSION below)

       [2]    The packer chooses the dimensions of  the  content.   The  width
              will  normally  be  the content's requested width plus twice its
              -ipadx option and the height will normally be the content's  re-
              quested  height  plus  twice its -ipady option.  However, if the
              -fill option is x or both then the width of the content  is  ex-
              panded  to  fill  the width of the parcel, minus twice the -padx
              option.  If the -fill option is y or both then the height of the
              content is expanded to fill the width of the parcel, minus twice
              the -pady option.

       [3]    The packer positions the content over its parcel.  If  the  con-
              tent  is  smaller than the parcel then the -anchor option deter-
              mines where in the parcel the content will be placed.  If  -padx
              or  -pady is non-zero, then the given amount of external padding
              will always be left between the content and  the  edges  of  the
              parcel.

       Once  a  given  content has been packed, the area of its parcel is sub-
       tracted from the cavity, leaving a smaller rectangular cavity  for  the
       next  content.  If a content does not use all of its parcel, the unused
       space in the parcel will not be used by  subsequent  content.   If  the
       cavity  should become too small to meet the needs of a content then the
       content will be given whatever space is left in  the  cavity.   If  the
       cavity  shrinks to zero size, then all remaining content on the packing
       list will be unmapped from the screen until the  container  window  be-
       comes large enough to hold them again.

   EXPANSION
       If  a  container window is so large that there will be extra space left
       over after all of its content have been packed, then the extra space is
       distributed  uniformly  among  all of the content for which the -expand
       option is set.  Extra horizontal space is distributed among the expand-
       able  content whose -side is left or right, and extra vertical space is
       distributed among the expandable content whose -side is top or bottom.

   GEOMETRY PROPAGATION
       The packer normally computes how large a container must be to just  ex-
       actly  meet  the  needs of its content, and it sets the requested width
       and height of the container to these dimensions.  This causes  geometry
       information  to  propagate up through a window hierarchy to a top-level
       window so that the entire sub-tree sizes itself to fit the needs of the
       leaf  windows.  However, the pack propagate command may be used to turn
       off propagation for one or more containers.  If propagation is disabled
       then  the  packer  will  not  set the requested width and height of the
       packer.  This may be useful if, for example, you wish for  a  container
       window to have a fixed size that you specify.

RESTRICTIONS ON CONTAINER WINDOWS
       The container for each content must either be the content's parent (the
       default) or a descendant of the content's parent.  This restriction  is
       necessary  to guarantee that the content can be placed over any part of
       its container that is visible  without  danger  of  the  content  being
       clipped by its parent.

PACKING ORDER
       If  the  container  for  a content is not its parent then you must make
       sure that the content is higher in the stacking  order  than  the  con-
       tainer.   Otherwise  the container will obscure the content and it will
       appear as if the content has not been packed  correctly.   The  easiest
       way  to make sure the content is higher than the container is to create
       the container window first:  the most recently created window  will  be
       highest  in  the  stacking  order.  Or, you can use the raise and lower
       commands to change the stacking order of either the  container  or  the
       content.

EXAMPLE
              # Make the widgets
              label .t -text "This widget is at the top"    -bg red
              label .b -text "This widget is at the bottom" -bg green
              label .l -text "Left\nHand\nSide"
              label .r -text "Right\nHand\nSide"
              text .mid
              .mid insert end "This layout is like Java's BorderLayout"
              # Lay them out
              pack .t   -side top    -fill x
              pack .b   -side bottom -fill x
              pack .l   -side left   -fill y
              pack .r   -side right  -fill y
              pack .mid -expand 1    -fill both

SEE ALSO
       grid(3tk), place(3tk)

KEYWORDS
       geometry manager, location, packer, parcel, propagation, size

Tk                                    4.0                            pack(3tk)

Generated by dwww version 1.14 on Fri Jan 24 06:09:50 CET 2025.