如何更改Tkinter的OptionMenu小部件的菜单背景颜色?

Vic*_*tor 6 python tkinter optionmenu

如果我从http://effbot.org/tkinterbook/optionmenu.htm中选择一个简单的OptionMenu示例,并添加一条设置背景颜色的线(见下文),只有按钮背景会改变颜色,而不是下拉菜单.仍然是灰色的 我可以为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()  
Run Code Online (Sandbox Code Playgroud)

谢谢

Bry*_*yan 13

您需要从中抓取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()  
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你。这正是我正在寻找的。 (2认同)

小智 6

我添加我的答案有点晚了,但我想添加一个澄清!

正如@Bryan 所说,更改背景和前景色的命令很好:

 w["menu"].config(bg="GREEN")
Run Code Online (Sandbox Code Playgroud)

但此命令实际上仅在单击时影响下拉菜单,如下图所示:

仅当单击时下拉菜单背景颜色

使用 Tkinter,在不单击窗口的情况下设置窗口属性的命令是:

w.config(bg="GREEN")
Run Code Online (Sandbox Code Playgroud)

下拉菜单背景颜色,无需单击

因此,有必要将这两行代码组合起来,得到一个完全绿色的下拉菜单!

w.config(bg="GREEN")
w["menu"].config(bg="GREEN")
Run Code Online (Sandbox Code Playgroud)

但仍然存在一个问题,因为如果您将光标放在打开菜单的按钮上,它就会恢复默认的白色......

光标位于上方时下拉菜单背景颜色

还有丑陋的蓝色:

光标位于上方时下拉菜单背景颜色

幸运的是 .config() 函数有一个参数可以纠正这个问题:

w.config(bg="GREEN", fg="BLACK", activebackground="GREEN", activeforeground="BLACK")
w["menu"].config(bg="GREEN", fg="BLACK", activebackground="GREEN", activeforeground="BLACK")
Run Code Online (Sandbox Code Playgroud)

因此,这里的方法是在背景中显示绿色下拉菜单,并在菜单项中显示黑色。但是您可以根据需要修改.config()函数的参数!(如宽度、高度、字体、字体大小……)

我希望我对像我这样的 Tkinter 初学者有足够的理解!:)