Mac系统下Tkinter Button控件设置颜色无效全部显示为白如何解决?
不需要降级到Python稳定版本,该问题和Python版本无关。
问题原因
macOS平台下Tkinter默认使用Aqua原生主题,该主题下的Button控件样式由系统统一控制,常规的bg、fg等颜色属性会被直接忽略。此外你代码中同时传入了bg和background两个等价属性,后者会覆盖前者的赋值,属于冗余配置。
解决方法
你可以任选以下方案实现自定义按钮颜色:
方案1:使用ttk.Button并自定义样式
Tkinter内置的ttk模块支持主题样式配置,可灵活修改按钮配色:
import tkinter from tkinter import ttk import os # 屏蔽Tk废弃警告 os.environ['TK_SILENCE_DEPRECATION'] = '1' tk = tkinter.Tk() # 配置自定义按钮样式 style = ttk.Style() style.configure('Custom.TButton', foreground='#03045e', background='#caf0f8', padding=5) style.map('Custom.TButton', background=[('active', '#ef233c')], foreground=[('active', 'blue')]) def browseFiles(): print("Browsing...") browseButton = ttk.Button(tk, text="Browse files", command=browseFiles, style='Custom.TButton') browseButton.pack() tk.mainloop()
方案2:给普通Button添加样式参数强制覆盖原生样式
如果不需要原生按钮的交互动效,可以添加特殊参数禁用系统样式渲染:
import tkinter import os os.environ['TK_SILENCE_DEPRECATION'] = '1' tk = tkinter.Tk() def browseFiles(): print("Browsing...") browseButton = tkinter.Button( tk, text="Browse files", command=browseFiles, fg='#03045e', bg='#caf0f8', activebackground='#ef233c', activeforeground='blue', # 以下参数强制关闭原生样式渲染 relief=tkinter.FLAT, bd=0, highlightthickness=1, overrelief=tkinter.RAISED ) browseButton.pack() tk.mainloop()
警告说明
你收到的废弃警告是macOS系统自带Tk框架的官方提示,不影响代码正常运行。除了上述代码中添加环境变量的屏蔽方式,也可以在运行脚本前在终端执行export TK_SILENCE_DEPRECATION=1临时屏蔽警告。
内容的提问来源于stack exchange,提问作者Finley Adams
相关产品推荐
相关产品推荐

