Есть ли способ изменить цвет определенного параметра в ttk.OptionMenu в Windows?

Я пытаюсь написать код для изменения цвета определенного параметра в ttk.OptionMenu нажатием кнопки (только этот параметр должен отображаться с цветом, когда он отображается в раскрывающемся списке). Вот код, похожий на мою потребность.

from tkinter import *
from tkinter.ttk import OptionMenu

root = Tk()

def ch_color():
    global ent, options
    option = ent.get()
    if option in options:
        #The code to change the color of that option in opt_menu

options = ['option 1','option 2', 'option 3', 'option 4']

var = StringVar()
var.set("Select")
opt_menu = OptionMenu(root, var, *options).pack()

ent = StringVar()
entry = Entry(root, textvariable = ent).pack()
button = Button(root, text = "Change Color", command = ch_color).pack()

Я пробовал это, но, видимо, он меняет цвет всего виджета, а не конкретного параметра, и это, но это не работает в Windows. Любая помощь будет оценена.


person AST    schedule 12.08.2020    source источник


Ответы (1)


OptionMenu — это кнопка, которая показывает меню. Меню представляет собой меню Tk, поэтому вы можете использовать в нем команды меню после получения ссылки из виджета OptionMenu. например:

menu = opt_menu.nametowidget(opt_menu.cget('menu'))
index = menu.index('option 2')
menu.entryconfigure(index, background='red')

Это найдет индекс меню записи «вариант 2» и изменит цвет его фона.

Лично я рекомендую вместо этого использовать ttk.Combobox.

person patthoyts    schedule 12.08.2020
comment
Большое спасибо за быстрый ответ, работает отлично. Кроме того, спасибо за предложение использовать ttk.Combobox - person AST; 13.08.2020