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)

上のコードを実行すると、 次のようにボタンが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()メソッドで配置しました。

ボタンのフォントサイズを変更する

ボタンのフォントサイズを変更したい場合は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」と表示されます。