Как работает stringvar с textvariable?
В случае Button вы можете настроить отображение текста одним из двух способов: с жестко закодированной строкой (например: text='click me'
) или с атрибутом textvariable
.
Атрибут textvariable
должен быть установлен для экземпляра одного из специальных объектов переменных tkinter StringVar
, IntVar
, DoubleVar
или BooleanVar
(например: var=tk.StringVar(); Button(..., textvariable=var)
).При настройке с экземпляром одной из этих переменных текст на кнопке будет отображать любое значение переменной.
Внутренне, когда вы задаете textvariable
, tkinter будет принимать строковое представление этоговозьмите объект и создайте переменную tcl во встроенном интерпретаторе.Таким образом, хотя он может принять стандартную переменную, команду или даже лямбду, в конечном итоге он создает внутреннюю переменную tcl с этим именем и связывает эту внутреннюю переменную с нижележащим виджетом tcl.Если вы не используете одну из специальных переменных, вам будет трудно получить или установить значение этой переменной.
Например, рассмотрите следующий набор команд:
var = tk.StringVar(value="hello")
tk.Button(root, textvariable=var)
Когда этот код выполняется, текст, который появляется на кнопке, будет hello
.Если вы измените переменную в любое время (например: var.set("goodbye")
), кнопка автоматически изменится, чтобы показать новое значение.