Tkinter, Python, CheckBox, помогите решить как проверить true или false?

Я не могу понять как делается проверка, вот код:

def show():
    print('флажок 18', setonstart_value.get())
    if (setonstart_value.get()):
        print('No')

window = tk.Tk()
setonstart_value = tk.StringVar()
setonstart = tk.Checkbutton(window, text='SetOnStart', 
                                    variable=setonstart_value,
                                    offvalue='No',
                                    onvalue='yes'
                                    )
setonstart.pack()
tk.Button(window, text='show', command=show).pack()
window.mainloop()

Ответы (1 шт):

Автор решения: insolor

У вас значение флажка - строка ('yes' или 'No'). Непустая строка считается истиной, поэтому условие в if (setonstart_value.get()): всегда выполняется.

Сделайте переменную setonstart_value логической переменной (BooleanVar()) вместо строковой (StringVar()), и уберите onvalue и offvalue, тогда при отключенной галке там будет False, при включенной - True:

import tkinter as tk


def show():
    print('флажок 18', setonstart_value.get())
    if (setonstart_value.get()):
        print('Yes')
    else:
        print('No')


window = tk.Tk()
setonstart_value = tk.BooleanVar()
setonstart = tk.Checkbutton(window, text='SetOnStart', variable=setonstart_value)
setonstart.pack()
tk.Button(window, text='show', command=show).pack()
window.mainloop()

Ну или оставить StringVar, но тогда нужно при проверке сравнивать с конкретным значением строки, например:

if (setonstart_value.get() == 'yes'):
    print('Yes')
else:
    print('No')
→ Ссылка