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」と表示されます。