1. チェックボックス (Checkbutton
)
チェックボックスは、四角形のボタンで、オンまたはオフの状態にすることができます。複数の選択肢から1つまたは複数のオプションを選ばせたい場合に便利です。
チェックボックスの作成
チェックボックスを作成するには、Checkbutton
ウィジェットを使用します。チェックボックスの状態(オンまたはオフ)を追跡するために、通常IntVar
型の変数が使用されます。この変数は、チェックボックスがオンの場合は1
、オフの場合は0
を保持します。
import tkinter as tk
# チェックボックスの状態を確認する関数
def show_status():
print("オン" if var.get() == 1 else "オフ")
# ウィンドウの作成
root = tk.Tk()
root.title("チェックボックスの例")
# 状態を保存するための変数
var = tk.IntVar()
# チェックボックスを var にリンク
checkbox = tk.Checkbutton(root, text="オプションを有効化", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
コードの説明
-
variable=var
: チェックボックスを変数var
にリンクします。チェックボックスの状態が変わるとvar
が更新されます。 -
関数
show_status()
: チェックボックスの現在の状態をコンソールに表示します。オンの場合は「オン」、オフの場合は「オフ」と表示されます。
複数のチェックボックスの使用
複数の独立したオプションが必要な場合、各チェックボックスをそれぞれの変数にリンクさせます。
# 状態を保存するための変数
option1 = tk.IntVar()
option2 = tk.IntVar()
# チェックボックス
check1 = tk.Checkbutton(root, text="オプション 1", variable=option1)
check2 = tk.Checkbutton(root, text="オプション 2", variable=option2)
check1.pack()
check2.pack()
2. ラジオボタン (Radiobutton
)
ラジオボタンは、複数の選択肢の中から1つだけを選べる丸いボタンです。ユーザーに1つの選択肢を選ばせたい場合に便利です。
ラジオボタンの作成
ラジオボタンを作成するには、Radiobutton
ウィジェットを使用します。ラジオボタンの選択を連動させるためには、全てのボタンを1つの変数(IntVar
またはStringVar
)にリンクさせる必要があります。
# 選択されたオプションを表示する関数
def show_choice():
print(f"選択されたオプション {choice.get()}")
# 選択を追跡するための変数
choice = tk.IntVar()
# ラジオボタン
radio1 = tk.Radiobutton(root, text="オプション 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="オプション 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="オプション 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
コードの説明
-
variable=choice
: 全てのラジオボタンを1つの変数choice
にリンクします。これにより、選択に連動します。 -
value
: このラジオボタンが選択されたとき、変数choice
が取る値を指定します。 -
関数
show_choice()
: コンソールに選択されたオプションを表示します。
テキスト値を使用したラジオボタン
また、ラジオボタンをStringVar
型の変数にリンクさせ、テキスト値を使用することもできます。
# テキスト選択のための変数
color_choice = tk.StringVar()
# テキスト値を使用したラジオボタン
radio_red = tk.Radiobutton(root, text="赤", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="青", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="緑", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. スピンボックス (Spinbox
)
スピンボックスは、ユーザーが範囲内の数値を選択できるウィジェットです。例えば年齢や数量など、数値を入力する場合に便利です。
スピンボックスの作成
Tkinterでは、Spinbox
ウィジェットを使用して、ユーザーが値を手動で入力したり、矢印を使用して選択したりできます。
# 選択された値を表示する関数
def show_spin_value():
print(f"値: {spin.get()}")
# 1から10までのスピンボックス
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
コードの説明
from_
とto
: スピンボックスの値の範囲を指定します。- 関数
show_spin_value()
: 値が変わるたびに選択された値をコンソールに表示します。
ステップと値の設定
increment
パラメータでスピンボックスのステップを設定でき、values
パラメータで特定の値を指定できます。
# 2ずつのステップのスピンボックス
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# 固定値のスピンボックス
spin_values = tk.Spinbox(root, values=("小", "中", "大"))
spin_values.pack(pady=5)
4. アプリケーションの例
チェックボックス、ラジオボタン、スピンボックスを使ったアプリケーションの例
これまで学んだ内容を組み合わせて、複数のオプションを選択して結果を確認できるインターフェースを作成しましょう。
import tkinter as tk
# メインウィンドウの作成
root = tk.Tk()
root.title("チェックボックス、ラジオボタン、スピンボックスの例")
root.geometry("300x300")
# 選択値を表示するための関数
def show_selections():
selections = []
selections.append(f"チェックボックス有効化: {'はい' if option.get() == 1 else 'いいえ'}")
selections.append(f"選択した色: {color_choice.get()}")
selections.append(f"数量: {spin.get()}")
message_label.config(text="\n".join(selections))
# チェックボックス
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="オプションを有効化", variable=option)
checkbox.pack(pady=5)
# ラジオボタン
color_choice = tk.StringVar(value="赤")
tk.Label(root, text="色を選択してください:").pack()
radio_red = tk.Radiobutton(root, text="赤", variable=color_choice, value="赤")
radio_blue = tk.Radiobutton(root, text="青", variable=color_choice, value="青")
radio_green = tk.Radiobutton(root, text="緑", variable=color_choice, value="緑")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# スピンボックス
tk.Label(root, text="数量:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# 選択値を表示するボタン
show_button = tk.Button(root, text="選択を表示", command=show_selections)
show_button.pack(pady=10)
# 結果を表示するラベル
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
完全な例の説明
- チェックボックス: "オプションを有効化"の状態を確認します。
- ラジオボタン: 3つの色の中から1つを選択します。
- スピンボックス: 1から10までの数量を選択します。
- "選択を表示"ボタン: 全てのウィジェットの現在の状態を
message_label
ラベルに表示します。
GO TO FULL VERSION