改变tkinter菜单栏的颜色

时间:2018-03-03 20:16:19

标签: python tkinter

我有以下代码,我尝试做的是将菜单栏的颜色更改为与我的窗口相同。我已尝试过您在下面看到的内容,将bg="#20232A"添加到menubar,但这似乎没有任何影响..

我的问题:下图是窗口(虽然是窗口的片段),它展示了菜单栏和背景。我希望菜单栏的颜色与下面看到的背景相同,我怎样才能达到这个目的?

enter image description here

from tkinter import *

config = {"title":"Editor", "version":"[Version: 0.1]"}

window = Tk()
window.title(config["title"] + " " +config["version"])
window.config(bg="#20232A")
window.state('zoomed')

def Start():
    menubar = Menu(window, borderwidth=0, bg="#20232A") # Tried adding background to this, but it doesent work

    filemenu = Menu(menubar, tearoff=0)
    filemenu.add_command(label="Open")
    filemenu.add_command(label="Save")
    menubar.add_cascade(label="File", menu=filemenu)
    window.config(menu=menubar)

Start()
window.mainloop()

2 个答案:

答案 0 :(得分:4)

您无法在Windows或OSX上更改菜单栏的颜色。有可能在linux上的一些窗口管理器上,虽然我不确定。

原因是菜单栏是使用不受tkinter管理的本机小部件绘制的,因此您只能使用平台允许的内容。

答案 1 :(得分:0)

在Linux上可以:

def main():

    root =Tk()
    menubar = Menu(root, background='lightblue', foreground='black',
               activebackground='#004c99', activeforeground='white')  
    file = Menu(menubar, tearoff=1, background='lightblue', foreground='black')  
    file.add_command(label="Receive")  
    file.add_command(label="Issue")  
    file.add_command(label="Track")  
    file.add_command(label="Search")  
    file.add_command(label="Allocate")  
    
    file.add_separator()  
    
    file.add_command(label="Exit", command=root.quit)  
    
    menubar.add_cascade(label="Goods", menu=file)  
    edit = Menu(menubar, tearoff=0)  
    edit.add_command(label="Undo")  
    
    edit.add_separator()  
    
    edit.add_command(label="Cut")  
    edit.add_command(label="Copy")  
    edit.add_command(label="Paste")  
    edit.add_command(label="Delete")  
    edit.add_command(label="Select All")  
    
    menubar.add_cascade(label="Accounts", menu=edit)  
    help = Menu(menubar, tearoff=0)  
    help.add_command(label="About")  
    menubar.add_cascade(label="Help", menu=help)  
    
    root.config(menu=menubar)  
    ex = MainWin()
    root.geometry("2000x1391")
    root.mainloop()


if __name__ == '__main__':
    main()

只需添加前景和背景属性即可。