manpagez: man pages & more
man pack(n)
Home | html | info | man
pack(n)                      Tk Built-In Commands                      pack(n)



______________________________________________________________________________


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
                            entire 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
              boolean value then propagation is disabled  for  container.   In
              either  of  these cases an empty string is returned.  If boolean
              is omitted then the command returns 0 or 1 to  indicate  whether
              propagation  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
              order  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 win-                                                       |
       dow                                                     |               |
              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  rect-
       angular  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
              requested height plus twice its -ipady option.  However, if  the
              -fill  option  is  x  or  both  then the width of the content is
              expanded 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
       becomes 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
       exactly  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(n), place(n)


KEYWORDS

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



Tk                                    4.0                              pack(n)

tk 8.6.11 - Generated Fri Jan 22 12:52:46 CST 2021
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.