Как изменить цвет ttk :: combobox

Я хочу изменить цвет виджета ttk :: combobox. Это мой код:

set MyBackgroundColor #00FF00
set MyForegroundColor #FF0000
font create MyFont -family Helvetica -size 12 -slant roman -weight normal
ttk::style theme use default
ttk::style configure TCombobox -font MyFont -background $MyBackgroundColor -fieldbackground $MyBackgroundColor -foreground $MyForegroundColor
option add *ComboboxPopdown.f.l.font MyFont
option add *ComboboxPopdown.f.l.background $MyBackgroundColor
option add *ComboboxPopdown.f.l.foreground $MyForegroundColor
# option add *ComboboxPopdown.f.l.selectbackground $MyBackgroundColor
# option add *ComboboxPopdown.f.l.selectforeground $MyForegroundColor

set Liste {Anton Berta Caesar}
set MyVar [lindex $Liste 0]
ttk::combobox .cb -values $Liste -textvariable MyVar -font MyFont -background $MyBackgroundColor -foreground $MyForegroundColor
pack .cb

Если я открою поле со списком и наведу указатель мыши на записи, они будут выделены черным цветом шрифта и серым цветом фона. Можно ли изменить эти цвета?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
501
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете изменить цвета всплывающих окон с помощью следующих опций:

option add *TCombobox*Listbox.background color
option add *TCombobox*Listbox.foreground color
option add *TCombobox*Listbox.selectBackground color
option add *TCombobox*Listbox.selectForeground color

Редактировать:

Если вам нужно изменить цвета определенного всплывающего окна или изменить цвета после создания поля со списком:

set popdown [ttk::combobox::PopdownWindow .combo]
$popdown.f.l configure -background color

Ссылки: wiki: Изменение цвета виджета

Это работает, если состояние поля со списком не только для чтения. Итак, я добавил ttk::style map TCombobox state {}. Это верно? Другая проблема возникает, когда виджет combox является потомком виджета фрейма. Тогда цвет фона снова станет серым.

Oliver Scholl 27.10.2018 18:51

Я изменил команду ttk::style map на ttk::style map TCombobox -background [list disabled color readonly color] и ttk::style map TCombobox -fieldbackground [list disabled color readonly color], и она отлично работает. Это также решило проблему с виджетом родительского фрейма.

Oliver Scholl 27.10.2018 19:03

Похоже, что фоновые цвета списка должны быть установлены до создания экземпляра поля со списком. Вам нужно их динамически менять?

Brad Lanam 27.10.2018 19:14

Другие вопросы по теме