【问题标题】:Changing the colour of tkinter menubar更改 tkinter 菜单栏的颜色
【发布时间】:2018-03-03 20:16:19
【问题描述】:

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

我的问题:下图是窗口(尽管是窗口的 sn-p),它同时展示了菜单栏和背景。我希望菜单栏与下面看到的背景颜色相同,我该如何实现?

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()

【问题讨论】:

  • 这是什么操作系统?
  • 它在 Windows 上。 Python 3.6.4

标签: python tkinter


【解决方案1】:

您无法在 Windows 或 OSX 上更改菜单栏的颜色。尽管我不确定,但在 linux 上的某些窗口管理器上可能是可能的。

原因是菜单栏是使用不受 tkinter 管理的本机小部件绘制的,因此您受限于平台允许的范围。

【讨论】:

  • 有替代解决方案吗?类似于菜单栏但允许 bg 的东西?
  • @Chris 你可以编写自己的类来占据我猜的窗口的最顶部。
  • @Chris:您可以简单地不将菜单分配给根窗口,而是在顶部放置一个带有菜单按钮的框架。尽管您可以非常接近,但它的外观或行为都不会像普通的菜单栏。这实际上取决于您是否希望某些东西以标准方式外观和功能,或者外观和功能略有不同。
  • 谢谢,我最终决定坚持使用标准外观,我想这至少是一种熟悉的美学,并且会从其他较暗的主题中脱颖而出。
【解决方案2】:

在 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()

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

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2023-03-21
    • 2019-01-21
    • 1970-01-01
    • 2017-07-04
    相关资源
    最近更新 更多