Packを使ってウィジェットを配置する
前回は、Placeを使ってウィジェットを配置しました。
今回は、Packを使ってウィジェットを配置してみましょう。
Packは、ジオメトリーマネージャーの中で最も簡単にウィジェットを配置できます。
Packの使い方
Packは、オプションなしでも自動的にウィジェットを配置します。
ただし、大まかな配置はできますが、細かな配置はできません。
ウィジェットを細かく配置したい場合は、GridやPlaceを使います。
Packの書式
Packの書式は、以下のようになります。
オブジェクト名.pack(オプション)
使用できる主なオプションは、以下のようになります。
各オプションは=(イコール)で値を指定します。
オプション名 | 内容 |
fill | ウィジェットの塗りつぶし。x(水平方向)、y(垂直方向)、both(全体) |
expand | ウィジェットを拡張して余分なスペースを埋める。true(有効)、false(無効)。デフォルトはfalse |
side | ウィジェットの位置。top(上)、bottom(下)、left(左)、right(右)。デフォルトはtop |
padx | 左右にパディング。単位はピクセル。デフォルトは0 |
pady | 上下にパディング。単位はピクセル。デフォルトは0 |
各オプションは、組み合わせることができます。
Packを使ったプログラム
Packを使ったプログラムは、以下のようになります。
オプションを指定しない
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
### インポート import tkinter ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("640x400") ### ラベル label1 = tkinter.Label(master=main, text="ラベル1", font=(None,36), fg="#FF0000", bg="#00FF00") label2 = tkinter.Label(master=main, text="ラベル2", font=(None,36), fg="#00FF00", bg="#0000FF") label3 = tkinter.Label(master=main, text="ラベル3", font=(None,36), fg="#0000FF", bg="#FF0000") ### ラベル配置 label1.pack() label2.pack() label3.pack() ### イベントループ main.mainloop() |
Packにオプションを指定しない場合は、縦方向にウィジェットが並びます。
ウィジェットを横方向に並べる
ウィジェットを横方向に並べるには、sideオプションを使います。
1 2 3 |
label1.pack(side="left") label2.pack(side="left") label3.pack(side="left") |
プログラムを実行すると、以下のような画面が表示されます。
ウィジェットを画面の中央に表示する
ウィジェットを画面の中央に表示するには、expandオプションを使います。
1 2 3 |
label1.pack(expand="true") label2.pack(expand="true") label3.pack(expand="true") |
プログラムを実行すると、以下のような画面が表示されます。
ウィジェットを画面全体に表示する
ウイジェットを画面全体に表示するには、expandオプションとfillオプションを組み合わせます。
1 2 3 |
label1.pack(expand="true", fill="both") label2.pack(expand="true", fill="both") label3.pack(expand="true", fill="both") |
プログラムを実行すると、以下のような画面が表示されます。
ウィジェットをパディングする
ウィジェットをパディングするには、padx、padyオプションを使います。
1 2 3 |
label1.pack(expand="true", fill="both", padx=10, pady=10) label2.pack(expand="true", fill="both", padx=10, pady=10) label3.pack(expand="true", fill="both", padx=10, pady=10) |
プログラムを実行すると、以下のような画面が表示されます。