【Python】ラジオボタンを使った処理の制御【Tkinter】
ラジオボタンを使った処理の制御
Tkinterでラジオボタンを使った処理の制御をする
値を取得する
ラジオボタンの初期値
- 最初のラジオボタン生成直後に select() で選択し初期値にしている
- これはラジオボタンがすべて未選択、もしくは選択状態になるのを防ぐために実施している
ウィジェット変数
ウィジェット変数とは
- ウィジェットの状態を制御するために使用されるオブジェクト
- ウィジェットが表示される際に、ウィジェット変数に格納された値がウィジェットに反映される
- ユーザーがウィジェットを操作した場合、その変更がウィジェット変数にも反映される
よく使われるウィジェット変数
- StringVar:文字列を保持
- IntVar:整数を保持
- DoubleVar:浮動小数点を保持
- BooleanVar:真偽値を保持
選択したラジオボタンに設定した値を取得する
import tkinter as tk # 値を取得する関数 def get_selected_value(): selected_value = radio_var.get() print(f'取得値:{selected_value}') window = tk.Tk() # ラジオボタンの値を保持する変数 radio_var = tk.StringVar() # ラジオボタンのオプションを作成 options = [ ('ラジオボタン1', '1'), ('ラジオボタン2', '2'), ('ラジオボタン3', '3') ] # ラジオボタンを生成 for text, value in options: rb = tk.Radiobutton(window, text=text, value=value, variable=radio_var) rb.pack(anchor=tk.W) # 初期値に'1'を選択状態にしておく if value == '1': rb.select() # 値の取得を実行するボタン btn = tk.Button(window, text='値を取得する', command=get_selected_value) btn.pack() window.mainloop()
実行結果
取得値:1
選択状態で処理を分岐させる
ラジオボタンに設定した数値で処理を分岐させる
import tkinter as tk def check_selection(): selected_value = radio_var.get() if selected_value == 1: print('ラジオボタン1が選択されました') elif selected_value == 2: print('ラジオボタン2が選択されました') elif selected_value == 3: print('ラジオボタン3が選択されました') else: print('選択肢以外の値です') # GUIの作成 window = tk.Tk() window.title('ラジオボタンの選択による条件分岐') # ラジオボタンの値を保持する変数 radio_var = tk.IntVar() # ラジオボタンの生成 radio_button1 = tk.Radiobutton(window, text='ラジオボタン1', variable=radio_var, value=1) radio_button1.pack() radio_button1.select() radio_button2 = tk.Radiobutton(window, text='ラジオボタン2', variable=radio_var, value=2) radio_button2.pack() radio_button3 = tk.Radiobutton(window, text='ラジオボタン3', variable=radio_var, value=3) radio_button3.pack() # ボタンを作成して選択状態を確認する check_button = tk.Button(window, text='選択を確認', command=check_selection) check_button.pack() window.mainloop()
実行結果
ラジオボタン2が選択されました
ラジオボタンに設定した文字列で処理を分岐させる
import tkinter as tk def get_selected_value(): selected_value = radio_var.get() print(f'{selected_value}が選択されました') # GUIの作成 window = tk.Tk() window.title('ラジオボタンの選択値を取得する関数') # ラジオボタンの値を保持する変数 radio_var = tk.StringVar() # ラジオボタンの生成 radio_button1 = tk.Radiobutton(window, text='ラジオボタン1', variable=radio_var, value='選択肢1') radio_button1.pack() radio_button1.select() radio_button2 = tk.Radiobutton(window, text='ラジオボタン2', variable=radio_var, value='選択肢2') radio_button2.pack() radio_button3 = tk.Radiobutton(window, text='ラジオボタン3', variable=radio_var, value='選択肢3') radio_button3.pack() # ボタンを作成して選択値を取得する get_value_button = tk.Button(window, text='選択値を取得', command=get_selected_value) get_value_button.pack() window.mainloop()
実行結果
選択肢3が選択されました