Тип события по сравнению с Value-Change для виджетов или использования .trace_Variable () Техника?

StackOverflow https://stackoverflow.com/questions/4165164

Вопрос

Существует ли тип события по изменению значений для ввода данных ввода данных, таких как запись, текст, Spinner, CheckButton, RadioButton? По изменению значения, я имею в виду возможность обнаруживать, когда значение виджета изменилось из-за ввода клавиатуры или вырезанного / удаления / вставки (и текста Edit_undo / Edit_redo)? Я не вижу такого события, описанного в документации по событию TKinter [1].

Является ли правильной техникой ссылания переменных TKinter к значениям виджета, которые я хочу отслеживать и использовать эти переменные '.trace_Variable (' w ', ...) методы для привязки к изменению значения? Это похоже на правильный подход, но я не видел много Trace_Variable () в исходном коде приложения Tkinter, который я изучал ... ведущий меня быть осторожным в использовании этого подхода.

[1] http://infohost.nmt.edu/tcc/help/pubs/tkinter/events.html.

Это было полезно?

Решение

Различные виджеты вызывают для разных решений. Например, Check Buttons и Radio Buttons имеют опцию команды, а с входным вижетешем вы можете использовать встроенные функции проверки.

Для всех виджетов, которые могут быть привязаны к переменной, выполнение переменной трассы - это общее решение. Text Widget - это одно исключение, так как вы не можете связать его с переменной без большинства усилий.

В мире TCL / TK я связываю все мои виджеты в один массив (имя TCL для хеш-карты / словаря), а затем поставить один след на массиве. К сожалению, TKinter напрямую поддерживает массивы TCL. Однако поддержка несколько легко взломать. Для получения дополнительной информации см. Мой ответ на этот вопрос: Как запускать код всякий раз, когда изменяется значение виджета TKinter?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top