【Python】tkinterのgrid()でウィジェットを行列指定で配置する!
Pythonのtkinterでボタンやラベルなどのウィジェット(部品)を配置するにはgrid()を使用します。
grid()とはtkinterをインポートした後に使用することができるメソッドであり、ウィンドウ(画面)を行列と認識してウィジェットを配置するようになります。
また、grid()メソッドはパラメータを設定することができ、ウィジェットの配置する場所を自分で設定することができます。
今回は、Pythonのtkinterのgrid()でウィジェットを行列指定で配置する方法について以下の内容で解説していきます。
⚫︎ ウィジェットを左上から配置する場合
⚫︎ ウィジェットに行を指定して配置する場合
⚫︎ ウィジェットに列を指定して配置する場合
⚫︎ ウィジェットに行列を指定して配置する場合
⚫︎ ウィジェットに内側の余白を設定して配置する場合
⚫︎ ウィジェットの外側の余白を設定して配置する場合
目次
tkinterとは
tkinterとは「Tool Kit Interface」のことであり、Python標準のGUIアプリケーションを作成するモジュールになります。
その為、tkinterを使用すると、GUIの画面にボタンやチェックボックス、ラジオボタン、文字を表示するためのラベルなどのウィジェットを配置でき、ボタンを押して操作することができ、簡単なものから本格的なものまで幅広い範囲でアプリケーションを作成することができます。
Pythonのtkinterの使い方について詳しく知りたい場合はこちらをご参考ください。
grid()とは
grid()とはtkinterをインポート後、ウィジェット(部品)を配置することができるメソッドになります。
ウィジェット(部品)を配置することができるメソッドは他にもありますが、grid()は行(row)と列(column)を指定してウィジェット(部品)を配置することができます。
grid()で配置するイメージ
grid()の書き方
grid()の書き方は下記となります。
sample.py
1 2 3 4 5 |
import tkinter as tk baseGround = tk.Tk() buttonA = tk.ウィジェット.grid(["オプション"]) |
パラメータ
⚫︎ オプション:
ウィジェットを配置する際のオプションを指定する
ウィジェットを配置するメソッドを呼び出した後にgrid()を呼び出すことでウィジェットをGUI画面を行列を指定して配置することができます。
また、grid()のパラメータにオプションを指定することで、GUI画面のどの行のどの列に配置するのかを指定することができます。
ウィジェットを行列指定で配置するサンプルコード
tkinterのgrid()でウィジェットを行列指定で配置するサンプルコードを紹介します。
ウィジェットを左上から配置する場合
ウィジェットを左上から配置する場合はgrid()をパラメータ無しで使用します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットを左上から配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid() button2 = tk.Button(baseGround,text = 'OK2').grid() button3 = tk.Button(baseGround,text = 'OK3').grid() button4 = tk.Button(baseGround,text = 'OK4').grid() baseGround.mainloop() |
出力結果
grid()をパラメータ無しで使用することで、ウィジェットをGUI画面の左上から配置することができます。
その為、OK1ボタン、OK2ボタン、OK3ボタン、OK4ボタンが左上から順番に配置しています。
ウィジェットに行を指定して配置する場合
ウィジェットに行を指定して配置する場合はgrid()のパラメータにrowを指定します。
rowはGUI画面の高さを行と認識して配置することができます。
そして、rowと一緒にrowspanを指定すると、一つのウイジェットの行間を指定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットに行を指定して配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid(row = 1, rowspan= 2) button2 = tk.Button(baseGround,text = 'OK2').grid(row = 7, rowspan= 2) button3 = tk.Button(baseGround,text = 'OK3').grid(row = 3, rowspan= 2) button4 = tk.Button(baseGround,text = 'OK4').grid(row = 5, rowspan= 2) baseGround.mainloop() |
出力結果
grid()のパラメータにrowとrowspanを指定することで、ウィジェットに行を指定して配置することができます。
その為、各ボタンの行間が2であることから行は1、3、5、9行列目に設定されています。
ウィジェットに列を指定して配置する場合
ウィジェットに列を指定して配置する場合はgrid()をパラメータにcolumnを指定します。
columnはGUI画面の横幅を列と認識して配置することができます。
そして、columnと一緒にcolunspanを指定すると、一つのウイジェットの列間を指定することができます。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットの列を指定して配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid(column = 1, columnspan= 4) button2 = tk.Button(baseGround,text = 'OK2').grid(column = 13, columnspan= 4) button3 = tk.Button(baseGround,text = 'OK3').grid(column = 5, columnspan= 4) button4 = tk.Button(baseGround,text = 'OK4').grid(column = 9, columnspan= 4) baseGround.mainloop() |
出力結果
grid()のパラメータにcolumnとcolumnspanを指定することで、ウィジェットに列を指定して配置することができます。
その為、各ボタンの列間が4であることから列は1、5、9、13列目に設定されています。
ウィジェットに行列を指定して配置する場合
ウィジェットに行列を指定して配置する場合はgrid()をパラメータにrowとcolumnを指定します。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットに行列を指定して配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid(row = 1 ,column = 1) button2 = tk.Button(baseGround,text = 'OK2').grid(row = 1 ,column = 2) button3 = tk.Button(baseGround,text = 'OK3').grid(row = 2 ,column = 2) button4 = tk.Button(baseGround,text = 'OK4').grid(row = 2 ,column = 1) baseGround.mainloop() |
出力結果
grid()のパラメータにrowとcolumnを設定することで、ウィジェットに行列を設定して配置することができます。
その為、ボタンの配置位置がそれぞれ行列で設定されて表示されています。
ウィジェットに内側の余白を設定して配置する場合
ウィジェットに内側の余白を設定して配置する場合はgrid()のパラメータにipadxとipadyを指定します。
ipadxはウィジェットの内側の横の長さを、ipadyはウィジェットの内側の高さを設定することができ、デフォルトでは0で設定されています。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットに内側の余白を設定して配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid(row = 1 ,column = 1, ipadx = 30, ipady = 40) button2 = tk.Button(baseGround,text = 'OK2').grid(row = 1 ,column = 2, ipadx = 30, ipady = 40) button3 = tk.Button(baseGround,text = 'OK3').grid(row = 2 ,column = 2, ipadx = 30, ipady = 40) button4 = tk.Button(baseGround,text = 'OK4').grid(row = 2 ,column = 1, ipadx = 30, ipady = 40) baseGround.mainloop() |
出力結果
grid()のパラメータにipadxとipadyを設定することで、ウィジェットの内側の余白を設定して配置することができます。
その為、ボタンの内側の余白がそれぞれ設定されて表示されています。
ウィジェットに外側の余白を設定して配置する場合
ウィジェットの外側の余白を設定して配置する場合はpack()のパラメータにpadxとpadyを指定します。
padxはウィジェットの外側の横の長さを、padyはウィジェットの外側の高さを設定することができ、デフォルトでは0で設定されています。
sample.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import tkinter as tk # メインウィンドウを作成 baseGround = tk.Tk() # ウィンドウのサイズを設定 baseGround.geometry('500x300') # 画面タイトル baseGround.title('ウィジェットに内側の余白を設定して配置する') # ボタンの作成と配置 button1 = tk.Button(baseGround,text = 'OK1').grid(row = 1 ,column = 1, padx = 30, pady = 40) button2 = tk.Button(baseGround,text = 'OK2').grid(row = 1 ,column = 2, padx = 30, pady = 40) button3 = tk.Button(baseGround,text = 'OK3').grid(row = 2 ,column = 2, padx = 30, pady = 40) button4 = tk.Button(baseGround,text = 'OK4').grid(row = 2 ,column = 1, padx = 30, pady = 40) baseGround.mainloop() |
出力結果
grid()のパラメータにpadxとpadyを設定することで、ウィジェットの外側の余白を設定して配置することができます。
その為、ボタンの外側の余白がそれぞれ設定されて表示されています。
今回のポイント
tkinterのgrid()で行列を指定してウィジェットを配置
⚫︎ tkiterで行列を指定してウィジェットを作成するにはgrid()を使用する
⚫︎ ウィジェットを左上から配置する場合はgrid()をパラメータ無しで使用する
⚫︎ ウィジェットに行を指定して配置する場合はgrid()のパラメータにrowを指定します。
⚫︎ ウィジェットに列を指定して配置する場合はgrid()をパラメータにcolumnを指定する
⚫︎ ウィジェットに行列を指定して配置する場合はgrid()をパラメータにrowとcolumnを指定する
⚫︎ ウィジェットの内側の余白を設定して配置する場合はgrid()のパラメータにipadxとipadyを指定する
⚫︎ ウィジェットの外側の余白を設定して配置する場合はgrid()のパラメータにpadxとpadyを指定する
関連記事
tkinterのpack()メソッドでウィジェット(部品)を配置する方法ついてはこちらをご参考ください。
tkinterのplace()メソッドでウィジェット(部品)を配置する方法ついてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。