Tkinter: ボタンの作成・配置・フォントサイズ・イベント検出
PythonのTkinterでボタンを使う方法を解説します。 ウィンドウにボタンを作成・配置し、 ボタンのクリックイベントを検出する方法を説明します。
ボタンを作成・配置する
Tkinterでボタンを2つ作成するサンプルプログラムは次の通りです。
import tkinter as tk
# ウィンドウ作成
root = tk.Tk()
# タイトル
root.title("テスト")
# ウィンドウサイズ
root.geometry("300x200")
# ボタンの作成と配置
button1 = tk.Button(root, text="Button 1")
button1.place(x=10, y=20, width=100, height=50)
button2 = tk.Button(root, text="Button 2")
button2.place(x=10, y=100, width=150, height=50)
# メインループ
root.mainloop()
上のコードを実行すると、 次のようにボタンが2つ配置されたウィンドウが表示されます。

ボタン作成 コードの解説
button1 = tk.Button(root, text="Button 1")
Button()コンストラクタの第一引数に 親ウィジェットを指定します。 今回はウィンドウに直接配置するので「root」を指定しています。
button1.place(x=10, y=20, width=100, height=50)
place()メソッドでボタンの配置場所やサイズを指定しています。 ウィジェットの配置方法は「pack()、grid()、place()」の3通りあり、 今回はplace()メソッドで配置しました。
(関連記事: Tkinter: ウィジェットの配置方法 3通り)
ボタンのフォントサイズを変更する
ボタンのフォントサイズを変更したい場合はfontオプションを使用して、 次のように指定します。
# フォントサイズ指定 フォントタイプはデフォルト
fonts = ("", 14)
button1 = tk.Button(root, text="Button 1", font=fonts)
button1.place(x=10, y=20, width=100, height=50)
上のコードは、 フォントタイプはデフォルトのまま「""」、 フォントサイズは「14」を指定しています。
クリックイベントを検出する command引数
ボタンのクリックイベントを検出する場合は、 command引数にコールバック関数を指定します。
サンプルコードは次の通りです。
import tkinter as tk
def btn_clicked():
print("Button Clicked")
# ウィンドウ作成
root = tk.Tk()
# ウィンドウサイズ
root.geometry("300x200")
# ボタンの作成と配置
button1 = tk.Button(root, text="Button 1", command=btn_clicked)
button1.place(x=10, y=20, width=100, height=50)
# メインループ
root.mainloop()
「command=btn_clicked」の部分でcomannd引数にbtn_clicked()を指定しています。 この方法だとシンプルにクリックイベントを検出できます。
クリックイベントを検出する bind()メソッド
command引数はシンプルで便利なのですが、 コールバック関数に引数を指定できません。
コールバック関数に引数を指定したい場合は bind()メソッドを使用します。
import tkinter as tk
def btn_clicked(e):
print(e.widget["text"])
# ウィンドウ作成
root = tk.Tk()
# ウィンドウサイズ
root.geometry("300x200")
# ボタンの作成と配置
button1 = tk.Button(root, text="Button 1")
button1.place(x=10, y=20, width=100, height=50)
# クリックイベント
button1.bind("<Button-1>", btn_clicked)
# メインループ
root.mainloop()
bind()メソッドの第1引数にマウスイベントを指定し、 第2引数にコールバック関数を指定します。
| マウスイベント | 内容 |
|---|---|
| <Button-1> | 左ボタンを押したとき |
| <ButtonRelease-1> | 左ボタンを離したとき |
コールバック関数で記述している「e.widget["text"]」は、
ボタンウィジェットのテキストを表示します。
今回の場合は「Button 1」と表示されます。