Смущает, что виджеты ttk имеют два разных понятия «состояние». Одним из них является параметр конфигурации с именем state
, а другим - метод с именем state
. Параметр конфигурации является сокращением для изменения возможности редактирования виджета. Метод используется для получения и установки нескольких внутренних состояний, используемых для стилизации.
Эти два способа задания состояния принимают разные значения. Состояние «только для чтения» - это одно состояние, которое допустимо для обоих, но «нормальное» действительно только для параметра конфигурации.
Чтобы использовать метод state
, вы передаете stateSpec , представляющий собой список из одного или нескольких состояний или состояний с отрицанием. Например, чтобы переключаться между режимами «только чтение» и «не только чтение», вы должны сделать это следующим образом:
entry.state(["readonly"])
entry.state(["!readonly"])
Этот способ задания состояния виджета является гораздо более гибким и детализированным и предназначен для обеспечения сложных стилей. Например, виджет может одновременно находиться в состояниях «только чтение», «отключен», «недействителен» и «зависать».
Более простой способ настроить, является ли виджет редактируемым или нет, с помощью опции конфигурации state
. Это должно быть всегда одно из строковых значений «нормальный», «отключенный» или «только для чтения».
entry.configure(state="readonly")
entry.configure(state="normal")
Допустимые значения для параметра конфигурации довольно понятны. Значения для создания stateSpec с помощью метода state
следующие:
- active - курсор мыши находится над виджетом и нажимаеткнопка мыши вызовет какое-то действие. (он же «prelight» (Gnome), «горячий» (Windows), «зависание»).
- отключен - виджет отключен под управлением программы (он же «недоступен», «неактивен»)).
- фокус - Виджет имеет фокус клавиатуры.
- нажат - Виджет нажимается (он же «вооружен» в мотиве).
- выбран - «Вкл.», «Истина» или «Ток» для таких вещей, как кнопки-флажки и радиокнопки.
- фон - Windows и Mac имеютпонятие «активного» или переднего окна. Фоновое состояние устанавливается для виджетов в фоновом окне и очищается для виджетов в окне переднего плана.
- readonly - Виджет не должен разрешать изменение пользователем.
- alternate - Альтернативный формат отображения для виджета. Например, используется для кнопок-переключателей и радиокнопок в состоянии «tristate» или «mixed», а также для кнопок с активным параметром -default.
- invalid - значение виджета недействительно. (Потенциальное использование: масштабирование значения виджета за пределами, входное значение виджета не прошло проверку.)
- hover - курсор мыши находится внутри виджета. Это похоже на активное состояние;он используется в некоторых темах для виджетов, которые обеспечивают отличную визуальную обратную связь для активного виджета в дополнение к активному элементу в виджете.