Как изменить цвет фона меню виджета OptionMenu от Tkinter?

Если я возьму простой пример OptionMenu из http://effbot.org/tkinterbook/optionmenu.htm и добавлю строку, которая устанавливает цвет фона (см. Ниже), только цвет фона кнопки изменяется, а не раскрывающееся меню, которое остается серым. Можно ли установить цвет как для кнопки, так и для меню OptionMenu?

Я использую Windows 7, Python 2.6.6, Tkinter Rev 73770

from Tkinter import *  
master = Tk()  
variable = StringVar(master)  
variable.set("one") # default value  
w = OptionMenu(master, variable, "one", "two", "three")  
w.config(bg = "GREEN")  # Set background color to green  
w.pack()  
mainloop()  

Спасибо

2 ответа

Вам нужно захватить menu объект из OptionMenu и установите его цвет фона. Это должно выполнить то, что вы хотите...

w = OptionMenu(master, variable, "one", "two", "three")  
w.config(bg = "GREEN")  # Set background color to green

# Set this to what you want, I'm assuming "green"...
w["menu"].config(bg="GREEN")

w.pack()  

Я добавляю свой ответ немного поздно, но я хотел бы добавить уточнение!

Как хорошо сказал @Bryan, команда для изменения цвета фона и переднего плана в порядке:

       w["menu"].config(bg="GREEN")

Но эта команда на самом деле влияет только на раскрывающееся меню при нажатии, как видно на этом изображении:

С Tkinter команда для установки атрибутов окна без щелчка по нему:

      w.config(bg="GREEN")

Поэтому необходимо объединить две строки кода, чтобы получить полностью зеленое раскрывающееся меню!

      w.config(bg="GREEN")
w["menu"].config(bg="GREEN")

Но все еще есть проблема, потому что, если вы наведете курсор на кнопку, чтобы открыть меню, он возобновит свой белый цвет по умолчанию...

А также уродливый синий цвет:

К счастью, у функции .config() есть параметр для решения этой проблемы:

      w.config(bg="GREEN", fg="BLACK", activebackground="GREEN", activeforeground="BLACK")
w["menu"].config(bg="GREEN", fg="BLACK", activebackground="GREEN", activeforeground="BLACK")

Итак, вот способ иметь зеленое раскрывающееся меню на заднем плане и черное для пунктов меню. Но вы можете изменить параметры функции .config() по своему усмотрению! (например, ширина, высота, шрифт, размер шрифта,...)

Надеюсь, я достаточно понял для новичков в Tkinter, таких как я! :)

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