1

我正在尝试编写代码以通过按下按钮来更改特定选项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 上不起作用。任何帮助将不胜感激。

4

1 回答 1

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。

于 2020-08-12T19:20:03.687 回答