Gridを使ってウィジェットを配置する
今までは、Packを使ってウィジェットを配置していましたが、他にも Gridと Placeを使ってウィジェットを配置することができます。
今回は、Gridを使ってウィジェットを配置してみましょう。
なお、Pack、Grid、Placeのことをジオメトリーマネージャー(Geometry Manager)と呼びます。
Gridの使い方
Gridでは、ウィジェットを行(row)と列(column)の2次元テーブルに配置します。
行と列を組み合わせたものをセル(cell)といい、下図のようなイメージとなります。
セルの大きさは一番大きなウィジェットのサイズに合わせられ、それよりも小さなウィジェットはセルの中央に配置されます。
また、stickyオプションの "n"、"s"、"e"、"w" を使って位置を変更することができます。
"n" は上、"s" は下、"e" は右、"w" は左に配置されます。
下図の例では、ウィジェット2は "n" を指定、ウィジェット4は "e" を指定しています。
Gridの書式
Gridの書式は、以下のようになります。
オブジェクト名.grid(row=行, column=列, sticky=位置)
各オプションを省略した時のウィジェットの位置は、以下のようになります。
row | 最後の行 |
column | 行の先頭(column=0) |
sticky | セルの中央 |
Gridを使ったプログラム
Gridを使ったプログラムは、以下のようになります。
複数のラベルをGridを使って配置しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
### インポート import tkinter ### メイン画面作成 main = tkinter.Tk() ### 画面サイズ設定 main.geometry("640x400") ### ラベル label1 = tkinter.Label(master=main, text="ラベル1", font=(None,24), fg="#FF0000", bg="#00FF00", height=3, width=10) label2 = tkinter.Label(master=main, text="ラベル2", font=(None,12), fg="#FF0000", bg="#FFFF00", height=3, width=10) label3 = tkinter.Label(master=main, text="ラベル3", font=(None,16), fg="#0000FF", bg="#00FFFF", height=3, width=10) label4 = tkinter.Label(master=main, text="ラベル4", font=(None,42), fg="#00FF00", bg="#FF00FF", height=3, width=10) label5 = tkinter.Label(master=main, text="ラベル5", font=(None,20), fg="#00FFFF", bg="#0000FF", height=3, width=10) label6 = tkinter.Label(master=main, text="ラベル6", font=(None, 8), fg="#FFFFFF", bg="#008800", height=3, width=10) ### ラベル配置 label1.grid(row=0, column=0) label2.grid(row=0, column=2) label3.grid(row=1, column=1, sticky="nw") label4.grid(row=1, column=2) label5.grid(row=2, column=1) label6.grid(row=2, column=2, sticky="se") ### イベントループ main.mainloop() |
プログラムを実行すると、以下のような画面が表示されます。