## Tcl9.0.3/Tk9.0.3 Documentation > Tk Commands > pack

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  NAME
    pack — 空洞の周りの縁に詰める幾何管理譜 Geometry manager that packs around edges of cavity
  構文 SYNOPSIS
  説明 DESCRIPTION
    pack window ?window ...? ?options?
    pack configure window ?window ...? ?options?
      -after other
      -anchor anchor
      -before other
      -expand boolean
      -fill style
        none
        x
        y
        both
      -in container
      -ipadx amount
      -ipady amount
      -padx amount
      -pady amount
      -side side
    pack content window
    pack forget window ?window ...?
    pack info window
    pack propagate container ?boolean?
    pack slaves window
  詰込み算法 THE PACKER ALGORITHM
  EXPANSION
  GEOMETRY PROPAGATION
  親窓の制限 RESTRICTIONS ON CONTAINER WINDOWS
  詰込み順序 PACKING ORDER
  用例 EXAMPLE
  SEE ALSO
  KEYWORDS

### NAME

pack — 空洞の周りの縁に詰める幾何管理譜 Geometry manager that packs around edges of cavity

### 構文 SYNOPSIS

pack option arg ?arg ...?

### 説明 DESCRIPTION

この pack 命令は詰込み譜との通信に使われる､それは幾何管理譜であり､親の子供を親の端の周りに順番に詰込み整頓する｡ pack 命令は option 引数によって幾つかの形式を有する: 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 several forms, depending on the option argument:

pack window ?window ...? ?options?
  もし pack の第１引数が窓の名前( “.” で始まる何かの値)であると､この命令は pack configure と同じ方法で処理される｡ If the first argument to pack is a window name (any value starting with “.”), then the command is processed in the same way as pack configure.

pack configure window ?window ...? ?options?
  引数は､一つ或はそれ以上の子供の窓の名前に､如何に子供を管理するかを指定する対の引数を伴って構成される｡組込み譜によって如何に指示項目が使われるかの詳細については下の THE PACKER ALGORITHM を参照されたい｡次の指示項目が運営されている: The arguments consist of the names of one or more content windows 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 は他の窓の名前でなければならない｡その親を子供の親として使い､詰込み順序に従って 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 は n や sw の様な適正な錨の位置でなければならない; それは､その区画にそれぞれの子供を配置する位置を指定する｡省略時設定は center である｡ Anchor must be a valid anchor position such as n or sw; it specifies where to position each content in its parcel. Defaults to center.

  -before other
    other は他の窓の名前でなければならない｡その親を子供の親として使い､詰込み順序に従って 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
    子供がその親の中の誂えられた余分の空間に拡張されるべきか否かを指定する｡boolean は 1 や no の様に適正な論理値であれば好い｡省略時設定は 0 ｡ Specifies whether the content should be expanded to consume extra space in their container. Boolean may have any proper boolean value, such as 1 or no. Defaults to 0.

  -fill style
    もし子供の区画が要求された寸法より大きい場合､この指示項目は子供を拡張に使ってよいかに使われる｡ style は次の形式の内の一つでなければならない: If a content's parcel is larger than its requested dimensions, this option may be used to stretch the content. Style must have one of the following values:

    none
      要求された寸法に -ipadx と -ipady を使って要求された内部を加えて子供に与える｡これが省略時設定｡ Give the content its requested dimensions plus any internal padding requested with -ipadx or -ipady. This is the default.

    x
      子供を水平に伸長しその区画の幅いっぱいに詰める(但し､ -padx によって指定された外部充填は残す)｡ Stretch the content horizontally to fill the entire width of its parcel (except leave external padding as specified by -padx).

    y
      子供を垂直に伸長しその区画の丈いっぱいに詰める(但し､ -pady によって指定された外部充填は残す)｡ Stretch the content vertically to fill the entire height of its parcel (except leave external padding as specified by -pady).

    both
      子供を水平と垂直の両方向に伸長する｡ Stretch the content both horizontally and vertically.

  -in container
    other によって与えられた親の窓に対して詰込み順の終わりに子供を挿入する｡ Insert the window at the end of the packing order for the container window given by container.

  -ipadx amount
    amount は内部水平充填を子供の両側にどれだけ残すかを指定する｡ amount は 2 や .5c の如く､有効な画面距離でなければならない｡省略時設定は 0 ｡ 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 は内部垂直充填を子供の両側にどれだけ残すかを指定する｡省略時設定は 0 ｡ Amount specifies how much vertical internal padding to leave on each side of the content. Amount defaults to 0.

  -padx amount
    amount は外部水平充填を子供の両側にどれだけ残すかを指定する｡ amount は左と右の別々の充填を指定する二つの値のリストでも良い｡省略時設定は 0 ｡ 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 separately. Amount defaults to 0.

  -pady amount
    amount は外部垂直充填を子供の両側にどれだけ残すかを指定する｡ amount は上と下の別々の充填を指定する二つの値のリストでも良い｡省略時設定は 0 ｡ 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 separately. Amount defaults to 0.

  -side side
    子供を親に対してどちらの側に詰めるかを指定する｡left か right か top か bottom かでなければならない｡省略時設定は top ｡ Specifies which side of the container the content will be packed against. Must be left, right, top, or bottom. Defaults to top.

  もし -in や -after や -before の指示項目が指定されないと､それぞれの子供は､それが既に詰込み譜によって処理されていない限り(その場合今の所に放置される)､親に対する詰込みリストの終わりで挿入される｡もしどれか指示項目が指定されると､全ての子供は指定された箇所に挿入される｡もしどれかの子供が詰込み譜によって既に処理されていると､それに対して指定されていないどの指示項目も省略時設定で受取った値でなく､前の値を保持する｡ 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 geometry manager then any unspecified options for them retain their previous values rather than receiving default values.

pack content window
  全ての奴隷の窓のリストを､windowに関する順に詰めて返す｡ リスト内の奴隷の窓の順序は､詰込み順と同じである｡ もし､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 forget window ?window ...?
  それぞれの子供を親に対する詰込み順序から取除き､その窓の対応を解除する｡子供は最早詰込み譜によっては処理されなくなる｡ Removes each of the windows from the packing order for its container and unmaps their windows. The content will no longer be managed by the packer.

  もし､主人の最後の奴隷の窓が制御できなくなると､ これは､仮想行事<<NoManagedChild>>を主人に送る; 主人はその様な変更に自身の寸法変更を選択し得る(又は､応答する)｡ If the last content window of the container becomes unmanaged, this will also send the virtual event <<NoManagedChild>> to the container; the container may choose to resize itself (or otherwise respond) to such a change.

pack info window
  window によって与えられる現在の子供の構成設定状態が要素のリストを pack configure に指定するかもしれない形式と同じ指示項目-値の形式で返す｡リストの最初の二つの要素は “-in master” であってここで master は子供の親である｡ 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?
  もし boolean が 1 や on の様な論理値の真値を有すると窓の名前を有しているはずの親に対する伝播が可能になる(下の GEOMETRY PROPAGATION を参照されたい)｡もし boolean 偽値を有すると､ master に対する伝播は不能になる｡どちらの場合も空文字列が返される｡もし boolean が省略されると命令は master に対する伝播が現在可能かを指し示す 0 か 1 を返す｡伝播可能が省略時設定｡ If boolean has a true boolean value such as 1 or on then propagation 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
  pack content windowの同義語｡ Synonym for pack content window.

### 詰込み算法 THE PACKER ALGORITHM

それぞれの親に対し詰込み譜は詰込みリストと呼ばれる子供の順序のリストを維持している｡ -in と -after と -before 構成設定指示項目はそれぞれの子供に対し親を指定することと､詰込みリスト内の子供の位置を指定することに使われる｡もしこれらの指示項目のどれもが与えられないと子供は親のための詰込みリストの末尾に追加される｡ For each container the packer maintains an ordered list of content windows called the packing list. The -in, -after, and -before configuration 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 rectangular 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. 詰込み譜は子供の -side 指示項目によって与えられる空洞の側に沿って子供の為に矩形の区域を割当てる｡もしその側が上か下であると区域の幅が空洞の幅であり､その高さは要求された子供の高さに -ipady と -pady を加えたものである｡左か右の側に対しては､区域の高さは空洞の高さであり､幅は要求された子供の幅に -ipadx と -padx 指示項目を加えたものである｡その区域は -expand 指示項目により更に大きくなるかもしれない(下の EXPANSION を参照されたい)｡ 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. 詰込み譜は子供の寸法を選択する｡幅は通常子供に要求された幅にその -ipadx 指示項目の２倍を加え､高さは通常子供に要求された高さにその -ipady 指示項目の２倍を加える｡もし -fill 指示項目が x か both であると､子供の幅は区域の幅を満たす為に拡張され､２倍の -padx 指示項目が減じられる｡もし -fill 指示項目が y か both であると､子供の高さは区域の高さを満たす為に拡張され､２倍の -pady 指示項目が減じられる｡ 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. 詰込み譜は子供をその区域の上に置く｡もし子供が区域より小さいと -anchor 指示項目が子供を何処に置くかを定める｡もし -padx か -pady が非零であると､与えられた大きさの外部詰め物が常に子供と区域の縁の間に残される｡ The packer positions the content over its parcel. If the content is smaller than the parcel then the -anchor option determines 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 subtracted 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

もし親の窓が､全ての子供が詰込まれた後に余分の空間が残る程に十分大きいと､余分の空間は -expand 指示項目が設定されている全ての子供に均一に分配される｡余分の水平の空間はその -side が left か right の拡張可能な子供の間で分配され､余分な垂直方向の空間はその -side が top か bottom の拡張可能な子供の間で分配される｡ 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 expandable 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

詰込み譜は通常その子供の要求に正確に合致する為に親が如何なる大きさになるべきかを計算し､そして要求された親の幅と高さをそれらの寸法に設定する｡これにより､窓の階層構造を通じて頂上窓に伝播すべき幾何情報を生じる､それにより全体の下位構造寸法そのものが末端の窓の必要性に適合する｡しかし､ pack propagate 命令は一つ或はそれ以上の親への伝播を断ち切る事にも使用できる｡もし伝播が不可になると､詰込み譜は親の窓の幅と高さの要求を設定しない｡これは､譬えば､使用者が指定した固定寸法を有する親の窓を望む時には便利である｡ 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

もし子供の為の親が実際には親以外の場合､子供の詰込み順が親の詰込み順より上になっている事を確認しなくてはならない｡そうなってない場合､親が子供を蔽い恰も適正に子供が管理されない様な現象になる｡確実に子供が親より上になる最も容易な方法は親の窓を最初に作成することである: 最も最近に作成された窓が詰込み順の最高になるので｡或は､ raise と lower 命令を使うと親や子供のどちらの詰込み順の変更も可能である｡ 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 container. 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, place

### KEYWORDS

geometry manager, location, packer, parcel, propagation, size
Copyright © 1990-1994 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.