ひとつのWindowの中に複数の部品を詰め込む場合、SAD/Tkinterではそれらの部品の並び方は梱包者packerが決定します。それぞれの部品はこのpackerに梱包の際の各種の指示を与えることができます。
梱包の指示の内で最も基本的なものは、その部品がウインドウの4つの辺のどれに向かって詰め込まれるか、その方向を指定するものです。この方向は属性Sideによって与えられます。例えば、
w = Window[]; a = Button[w, Text -> "1 TOP", Side -> "top" ]; b = Button[w, Text -> "2 LEFT", Side -> "left" ]; c = Button[w, Text -> "3 RIGHT", Side -> "right" ]; d = Button[w, Text -> "4 BOTTOM", Side -> "bottom"];
とすれば、a, b, c, d 4つのボタンが図の左上のようにアレンジされます。また、これらを作成する順番を変えると、ボタンは次図のようにさまざまな様式で配置されます。この図で、ボタンの番号は作成順、文字はSideの方向を表わします。このように、Sideの与え方及び作成の順番により、梱包の結果は変わってきます。
梱包の結果はSideパラメータと作成の順番できまる。
梱包に際して、各部品のまわりにすき間を持たせたい場合があります。属性PadX及び PadYによって、それぞれ水平、垂直両方向のすき間を指定できます。この場合単位はピクセルですが、センチメートルやインチでの指定も可能です(後述)。例えば
w = Window[]; a = Button[w, Text -> "1 TOP", Side -> "top", PadX -> 20, PadY->0]; b = Button[w, Text -> "2 LEFT", Side -> "left", PadX -> 20, PadY->0]; c = Button[w, Text -> "3 RIGHT", Side -> "right", PadX -> 20, PadY->0]; d = Button[w, Text -> "4 BOTTOM", Side -> "bottom", PadX -> 20, PadY->0];
とすると、図のような結果が得られます。
部品の周りのすき間はPadX,PadYで確保する。
場合によっては、各部品の内部にすき間を持たせたい場合もあります。属性IPadX及びIPadYによって、それぞれ水平、垂直両方向の部品内部のすき間を指定できます。
なお、Buttonなどのいくつかの部品にはTextPadX, TextPadYという属性もあり、表示文字の周囲にさらにすき間を確保することができます。
w = Window[];
a = Button[w, Text -> "1 TOP", Side -> "top",
PadX -> 20, PadY->0];
b = Button[w, Text -> "2 LEFT", Side -> "left",
IPadX -> 20, IPadY->0];
c = Button[w, Text -> "3 RIGHT", Side -> "right",
PadX -> 20, PadY->0];
d = Button[w, Text -> "4 BOTTOM", Side -> "bottom",
PadX -> 20, PadY->0];
の結果は下図になります。
部品内部のすき間はIPadX, IPadY及びTextPadX, TextPadYで確保する。
今、例えばウインドウの大きさが変更されるなどの原因で、ある部品の周りに余分なすき間が発生したとします。もし、その部品にExpand -> Trueという属性が指定してあると、その部品は周りのすき間を自分の梱包のすき間とします。次の例はButtonの場合のExpandの効果を示すためのもので、下図のような結果になります。
w1 = Window[MinSize -> {200, 200}];
b1 = Button[w1, Expand -> True,
Text -> "Expand -> True"];
b2 = Button[w1, Expand -> True,
Text -> "Expand -> True"];
w2 = Window[MinSize -> {200, 200}];
b3 = Button[w2, Expand -> False,
Text -> "Expand -> False"];
b4 = Button[w2, Expand -> False,
Text -> "Expand -> False"];
Expandの効果
FillはExpand -> Trueなどによって与えられた自分の梱包のすき間を自分の表示域として取り込むための属性です。これにはFill -> "x", Fill -> "y", Fill -> "both" の方向の指定が可能です。 次の例はButtonの場合のFillの効果を示すためのもので、下図のような結果になります。
w1 = Window[MinSize -> {250, 200}];
b1 = Button[w1, Expand -> True,
Fill -> "x",
Text -> "Expand -> True, Fill ->?"x?""];
b2 = Button[w1, Expand -> True,
Fill -> "y",
Text -> "Expand -> True, Fill ->?"y?""];
b3 = Button[w1, Expand -> True,
Fill -> "both",
Text -> "Expand -> True, FIll ->?"both?""];
Fillの効果
AnchorはExpand -> Trueなどによって与えられた自分の梱包のすき間よりも自分の表示域が狭い場合、そのすき間の中のどこに表示域を設定するかを指定します。Anchorは "n", "ne", "e", "se", "s", "sw", "w", "nw", "c" の内の一つの値をとります。"c" は "center" と書いても構いません。
また、Buttonなどのいくつかの部品には属性TextAnchorが指定でき、それにより表示テキストを部品の中のどちら側に表示するかを指定できます。TextAnchorのパラメータはAnchorと同じです。
Anchorの効果