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')