LoginSignup
0
5

More than 1 year has passed since last update.

Tkinterのボタン配置方法いろいろ(pack,grid,place)

Posted at

はじめに

仕事でTkinterを使う機会ができたので、少し勉強しています。
基礎的な内容ですが、ヴィジェットの配置方法が複数あってわかりづらかったので、ボタンを使っていろいろ試してまとめてみました。

pack()メソッドを使ってボタンを配置する

メソッドの引数にどこから並べるのかを記載してボタンを設置します。
以下の例ではTOPが2個あるので、ボタン5の位置がボタン1の下に積みあがるような配置になっています。

in
import tkinter as tk

base = tk.Tk()
base.geometry('500x400')
base.title('Button-set-test')

button1 = tk.Button(base, text='ボタン1').pack(side=tk.TOP)
button2 = tk.Button(base, text='ボタン2').pack(side=tk.LEFT)
button3 = tk.Button(base, text='ボタン3').pack(side=tk.RIGHT)
button4 = tk.Button(base, text='ボタン4').pack(side=tk.BOTTOM)
button5 = tk.Button(base, text='ボタン5').pack(side=tk.TOP)

base.mainloop()

grid()メソッドを使ってボタンを配置する

ボタンを格子状に並べて配置することができます。
最も小さい数値のボタンが左上に配置され、そこから数が小さい順に積みあがっていくような形になります。以下の例ではボタン5はもっと右下に配置されるかなと思いましたが、ボタン4の斜め下に配置されました。

in
import tkinter as tk

base = tk.Tk()
base.geometry('500x400')
base.title('Button-set-test')

button1 = tk.Button(base, text='ボタン1').grid(row=0,column=0)
button2 = tk.Button(base, text='ボタン2').grid(row=0,column=1)
button3 = tk.Button(base, text='ボタン3').grid(row=1,column=1)
button4 = tk.Button(base, text='ボタン4').grid(row=2,column=2)
button5 = tk.Button(base, text='ボタン5').grid(row=8,column=8)

base.mainloop()

place()メソッドを使ってボタンを配置する

ピクセル単位で座標を設定してボタンを配置することができます。
ほかの2つと違い積みあがるイメージではないので、一番使いやすいと感じました。
以下の例ではボタン5の位置をボタン1の近くにしてみました。座標が近いと被ってしまうようなので、配置には注意が必要だなと思いました。

in
import tkinter as tk

base = tk.Tk()
base.geometry('500x400')
base.title('Button-set-test')

button1 = tk.Button(base, text='ボタン1').place(x=100,y=100)
button2 = tk.Button(base, text='ボタン2').place(x=200,y=100)
button3 = tk.Button(base, text='ボタン3').place(x=300,y=100)
button4 = tk.Button(base, text='ボタン4').place(x=300,y=200)
button5 = tk.Button(base, text='ボタン5').place(x=110,y=110)

base.mainloop()
0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5