チェックが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")

コメント