Tkinter widgets are not first-class Python objects. Thus, we have to use workarounds such as Intvar, StringVar, and BooleanVar to handle variables in Tkinter. This adds a small layer of complexity, as error messages returned by the Tcl interpreter are not very Python-friendly, which makes it harder to debug.