如何更改Tkinter的OptionMenu组件的菜单背景颜色?
我举个简单的例子,关于OptionMenu这个控件,来自于http://effbot.org/tkinterbook/optionmenu.htm。如果我在代码里加一行来设置背景颜色(见下面的代码),那么只有按钮的背景颜色会改变,而下拉菜单的背景颜色还是灰色的。请问我能同时设置OptionMenu按钮和菜单的颜色吗?
我使用的是Windows 7,Python 2.6.6,Tkinter版本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 个回答
6
我虽然来得有点晚,但想补充一下说明!
正如@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初学者理解! :)
24
你需要从 OptionMenu
中获取 menu
对象,然后设置它的背景颜色。这样就能实现你想要的效果...
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()