Как изменить цвет фона меню виджета 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, таких как я! :)