Как изменять значения через чекбоксы в Tkinter?
Я только начал изучать библиотеку Tkinter, да и Python в целом. Хочу сделать так, чтобы при активации одного чекбокса изменялось соответствующее значение в словаре. Я не совсем понимаю, как нужно вернуть значения чекбокса... Для примера я хочу добиться типа такого результата:
from tkinter import *
root = Tk()
preset_configs = {
"test1": "0",
"test2": "0",
}
def on_click(toggle, key_set):
if toggle.get() == 1:
preset_configs[key_set] = "1"
else:
preset_configs[key_set] = "0"
check_var = IntVar()
check_var1 = IntVar()
check = Checkbutton(root, text='Текст1', onvalue=1, offvalue=0, variable=check_var, command=on_click(check_var, "test1"))
check1 = Checkbutton(root, text='Текст2', onvalue=1, offvalue=0, variable=check_var1, command=on_click(check_var1, "test2"))
check.pack()
check1.pack()
Ответы (1 шт):
Автор решения: n1tr0xs
→ Ссылка
В параметре command вы передали не функцию, а результат ее выполнения. Для того, чтобы таким образом вызвать функцию с параметрами нужно использовать lambda-функцию.
Замените
check = Checkbutton(root, text='Текст1', onvalue=1, offvalue=0, variable=check_var, command=on_click(check_var, "test1"))
check1 = Checkbutton(root, text='Текст2', onvalue=1, offvalue=0, variable=check_var1, command=on_click(check_var1, "test2"))
На
check = Checkbutton(root, text='Текст1', onvalue=1, offvalue=0, variable=check_var, command=lambda: on_click(check_var, "test1"))
check1 = Checkbutton(root, text='Текст2', onvalue=1, offvalue=0, variable=check_var1, command=lambda: on_click(check_var1, "test2")