If you follow this protocol, the widget will always track the value of the
variable, with no further intervention on your part.
+Keep a reference to the variable for as long as a widget uses it, for example
+by storing it as an attribute (see :class:`Variable`).
+
For example::
import tkinter as tk
:class:`StringVar`, :class:`IntVar`, :class:`DoubleVar` or
:class:`BooleanVar` -- rather than :class:`!Variable` directly.
+ .. note::
+
+ When a :class:`!Variable` is garbage collected, its Tcl variable is unset.
+ Keep a reference to it for as long as a widget is linked to it, for example
+ by storing it as an attribute rather than in a local variable.
+ Otherwise Tk recreates the Tcl variable to keep the widget working, but it
+ is never unset again, leaking one Tcl variable per dropped wrapper.
+
.. versionchanged:: 3.10
Two variables now compare equal (``==``) only when they have the same
name, are of the same class, and belong to the same Tcl interpreter.