CodeGym /Javaコース /Python SELF JA /チェックボックス、ラジオボタン、スピンボックスの操作

チェックボックス、ラジオボタン、スピンボックスの操作

Python SELF JA
レベル 50 , レッスン 2
使用可能

1. チェックボックス (Checkbutton)

チェックボックスは、四角形のボタンで、オンまたはオフの状態にすることができます。複数の選択肢から1つまたは複数のオプションを選ばせたい場合に便利です。

チェックボックスの作成

チェックボックスを作成するには、Checkbuttonウィジェットを使用します。チェックボックスの状態(オンまたはオフ)を追跡するために、通常IntVar型の変数が使用されます。この変数は、チェックボックスがオンの場合は1、オフの場合は0を保持します。

Python
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(): チェックボックスの現在の状態をコンソールに表示します。オンの場合は「オン」、オフの場合は「オフ」と表示されます。

複数のチェックボックスの使用

複数の独立したオプションが必要な場合、各チェックボックスをそれぞれの変数にリンクさせます。

Python
# 状態を保存するための変数
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)にリンクさせる必要があります。

Python
# 選択されたオプションを表示する関数
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型の変数にリンクさせ、テキスト値を使用することもできます。

Python
# テキスト選択のための変数
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ウィジェットを使用して、ユーザーが値を手動で入力したり、矢印を使用して選択したりできます。

Python
# 選択された値を表示する関数
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パラメータで特定の値を指定できます。

Python
# 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. アプリケーションの例

チェックボックス、ラジオボタン、スピンボックスを使ったアプリケーションの例

これまで学んだ内容を組み合わせて、複数のオプションを選択して結果を確認できるインターフェースを作成しましょう。

Python
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ラベルに表示します。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION