Назначение, такое как:
cbttn = Checkbutton(text="Caps?").grid(row=3, column=0)
дает в cbttn объект типа Нет .
Либо удалите назначениев cbttn (если вы не хотите ссылаться на него далее в сценарии)
Checkbutton(text="Caps?").grid(row=3, column=0)
или переместите сетку на новую строку как:
cbttn = Checkbutton(text="Caps?")
cbttn.grid(row=3, column=0)
И посмотрите, была ли кнопка CheckButtonнажата или нет, используйте доступную опцию command .Проверьте пример здесь .Взяв этот пример:
from tkinter import *
def display():
print(CheckVar1.get())
top = Tk()
CheckVar1 = IntVar()
CheckVar2 = IntVar()
C1 = Checkbutton(top, text = "Music", variable = CheckVar1, \
onvalue = 1, offvalue = 0, height=5, \
width = 20, command = display)
C2 = Checkbutton(top, text = "Video", variable = CheckVar2, \
onvalue = 1, offvalue = 0, height=5, \
width = 20)
C1.pack()
C2.pack()
top.mainloop()
Выход должен продолжать переключаться между 0 и 1