You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Tkinter菜单栏颜色使其与窗口背景色一致

我明白你遇到的问题了——Tkinter的默认菜单栏确实有点“顽固”,直接加bg属性往往不生效,因为它默认调用系统原生的菜单样式,不会理会我们设置的背景色参数。下面给你几个可行的解决办法,帮你把菜单栏颜色改成和窗口背景#20232A一致:

方案1:用ttk自定义菜单栏样式(推荐,简单高效)

Tkinter的ttk组件支持更灵活的样式自定义,只要切换到支持自定义的主题(比如clam),就能修改菜单栏的背景色:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.configure(bg="#20232A")

# 配置ttk样式,先切换到支持自定义的主题
style = ttk.Style(root)
style.theme_use("clam")
# 设置菜单栏的背景色和文字颜色,文字颜色可以根据你的需求调整
style.configure("TMenubar", background="#20232A", foreground="white")

# 创建ttk菜单栏并绑定到窗口
menubar = ttk.Menu(root, style="TMenubar")
root.config(menu=menubar)

# 添加示例菜单选项
file_menu = ttk.Menu(menubar, style="TMenubar")
file_menu.add_command(label="Open", command=lambda: print("Open clicked"))
file_menu.add_command(label="Save", command=lambda: print("Save clicked"))
menubar.add_cascade(label="File", menu=file_menu)

root.mainloop()

方案2:自定义菜单栏组件(完全可控,适配所有场景)

如果ttk的方案在某些系统(比如macOS)还是无法生效,你可以用Frame模拟菜单栏,完全脱离系统原生样式,实现100%自定义:

import tkinter as tk

root = tk.Tk()
root.configure(bg="#20232A")

# 用Frame模拟菜单栏容器
menubar_frame = tk.Frame(root, bg="#20232A")
menubar_frame.pack(fill="x")

# 定义下拉菜单的触发事件
def show_file_menu(event):
    file_menu.post(event.x_root, event.y_root)

# 创建菜单栏上的“File”按钮(用Label模拟,可点击)
file_btn = tk.Label(
    menubar_frame, 
    text="File", 
    bg="#20232A", 
    fg="white", 
    padx=12, 
    pady=3, 
    cursor="hand2"
)
file_btn.pack(side="left")
file_btn.bind("<Button-1>", show_file_menu)

# 创建下拉菜单,设置和窗口一致的背景色
file_menu = tk.Menu(
    root, 
    bg="#20232A", 
    fg="white", 
    bd=0, 
    activebackground="#303641"  # 可以设置鼠标 hover 时的颜色
)
file_menu.add_command(label="Open", bg="#20232A", fg="white", command=lambda: print("Open clicked"))
file_menu.add_command(label="Exit", bg="#20232A", fg="white", command=root.quit)

root.mainloop()

方案3:修改Windows系统注册表(不推荐,影响全局)

如果你只在Windows系统上使用程序,且愿意修改全局系统样式,可以通过注册表调整菜单背景色:

  • 打开注册表编辑器,定位到HKEY_CURRENT_USER\Control Panel\Colors
  • 修改Menu的值为32 35 42(对应#20232A的RGB数值)
  • 重启程序后,Tkinter的菜单栏会自动使用这个颜色

不过这个方法会影响所有使用系统菜单的程序,所以只适合个人自用场景。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:02:04