チェックが1つの場合の判断方法
Tkinterでチェックボックスの状態を判断するには、 IntVar
型の変数を使用します。以下は実例のコードです。
import tkinter as tk def on_submit_button_click(): if check_var.get() == 1: label.config(text="Checkbox is selected") else: label.config(text="Checkbox is not selected") root = tk.Tk() check_var = tk.IntVar() checkbox = tk.Checkbutton(root, text="Check me", variable=check_var) checkbox.pack() button = tk.Button(root, text="Submit", command=on_submit_button_click) button.pack() label = tk.Label(root) label.pack() root.mainloop()
上記のコードでは、 check_var
という IntVar
型の変数がチェックボックスの状態を保持しています。
選択されている場合は 1
、選択されていない場合は 0
となります。
on_submit_button_click
関数内で、 check_var.get()
メソッドを使用して check_var
の値を取得し、チェックボックスが選択されているか判断しています。
その上で、label.config(text="Checkbox is selected")
または label.config(text="Checkbox is not selected")
のいずれかを呼び出し、ラベルに表示する文字列を変更しています。
チェックが2つの場合の判断方法
複数のチェックボックスがある場合、各チェックボックスに対して別の変数を作成し、それぞれにIntVar
を割り当てることで取得することができます。
以下は、2つのチェックボックスがあり、それぞれが選択されたかどうかを判定して、その結果を表示するサンプルコードです。
import tkinter as tk
def on_submit_button_click():
if var1.get() == 1:
result_text += "Option 1 is selected.\n"
if var2.get() == 1:
result_text += "Option 2 is selected.\n"
label.config(text=result_text)
root = tk.Tk()
var1 = tk.IntVar()
check_box_1 = tk.Checkbutton(root, text="Option 1", variable=var1)
check_box_1.pack()
var2 = tk.IntVar()
check_box_2 = tk.Checkbutton(root, text="Option 2", variable=var2)
check_box_2.pack()
button = tk.Button(root, text="Submit", command=on_submit_button_click)
button.pack()
label = tk.Label(root)
label.pack()
root.mainloop()
チェックが3つ以上で判定したい場合
複数のチェックボックスを使って複数の条件で判定するには、各チェックボックスの状態を変数に格納し、それらを使って判定を行います。
以下は、3つのチェックボックスの状態を変数checkbox1
, checkbox2
, checkbox3
に格納し、それらを使って判定するサンプルコードです。
scssCopy codeimport tkinter as tk
def on_submit_button_click():
if checkbox1.get() == 1 and checkbox2.get() == 1 and checkbox3.get() == 0:
label.config(text="Conditions 1, 2 are checked, 3 is not checked")
elif checkbox1.get() == 1 and checkbox2.get() == 0 and checkbox3.get() == 1:
label.config(text="Conditions 1, 3 are checked, 2 is not checked")
elif checkbox1.get() == 0 and checkbox2.get() == 1 and checkbox3.get() == 1:
label.config(text="Conditions 2, 3 are checked, 1 is not checked")
elif checkbox1.get() == 1 and checkbox2.get() == 1 and checkbox3.get() == 1:
label.config(text="Conditions 1, 2, 3 are checked")
else:
label.config(text="None of the conditions are checked")
root = tk.Tk()
checkbox1 = tk.IntVar()
checkbox2 = tk.IntVar()
checkbox3 = tk.IntVar()
tk.Checkbutton(root, text="Option 1", variable=checkbox1).pack()
tk.Checkbutton(root, text="Option 2", variable=checkbox2).pack()
tk.Checkbutton(root, text="Option 3", variable=checkbox3).pack()
button = tk.Button(root, text="Submit", command=on_submit_button_click)
button.pack()
label = tk.Label(root)
label.pack()
root.mainloop()
ちなみにdef関数部分をもう少し可読性を挙げると、こんな感じ(どちらが分かりやすいんだろう
def on_submit_button_click(): checked = [checkbox1.get(), checkbox2.get(), checkbox3.get()] if checked == [1, 1, 0]: label.config(text="Conditions 1, 2 are checked, 3 is not checked") elif checked == [1, 0, 1]: label.config(text="Conditions 1, 3 are checked, 2 is not checked") elif checked == [0, 1, 1]: label.config(text="Conditions 2, 3 are checked, 1 is not checked") elif checked == [1, 1, 1]: label.config(text="Conditions 1, 2, 3 are checked") else: label.config(text="None of the conditions are checked")
コメント