Python имеет классы для переменных Tkinter StringVar(), BooleanVar() и т. д. Все они используют методы get(), set(string) и trace(mode, callback). Функция callback, переданная как второй аргумент в trace(mode, callback), передается четыре аргумента, self, n, m, x.
Для примера BooleanVar() они выглядят как '', 'PYVAR0', 'w'.
Третий аргумент x представляется режимом, который вызвал трассировку, в моем случае переменная была изменена. Однако какова первая переменная, представляющая собой пустую строку? Что второе, если я должен был предположить, что я бы сказал, какое-то внутреннее имя переменной?
Первый аргумент - это имя переменной, но не «бесполезно», поскольку вы можете установить его, когда вы объявляете переменную, например:
someVar = IntVar(name="Name of someVar")
Когда вы проверяете первый аргумент в trace callback будет равен «Name of someVar». Используя имя для различения переменных, вы можете привязать один и тот же обработчик для отслеживания изменений к любому числу переменных, а не для отдельного обработчика для каждой переменной.