为什么在Mac系统上使用Python无法修改tkinter按钮的背景颜色
Mac系统tkinter按钮无法修改背景色的原因及解决方案
产生原因
macOS平台的tkinter默认使用Aqua原生UI主题,该主题下的Button组件样式由系统原生逻辑接管,直接调用config(bg='颜色值')修改背景色的配置不会生效。
解决方法
方案1:切换ttk主题为跨平台通用主题
使用tkinter自带的ttk组件,将主题切换为clam/alt这类非原生主题后,即可通过自定义样式修改按钮背景色,修改后的代码如下:
from tkinter import * from tkinter import ttk w = Tk() # 初始化样式实例并切换非原生主题 style = ttk.Style(w) style.theme_use('clam') def change(): # 点击后应用自定义的黄色背景样式 b.config(style='YellowBtn.TButton') # 提前配置自定义样式 style.configure('YellowBtn.TButton', background='yellow') b = ttk.Button(w, text='CHANGE', command=change) b.pack() w.mainloop()
方案2:使用Label组件模拟按钮
如果不想调整主题,也可以用Label组件模拟按钮的交互效果,背景色修改逻辑和普通组件完全一致,兼容所有平台:
from tkinter import * w = Tk() def change_click(e): # 响应鼠标左键点击事件修改背景 l.config(bg='yellow') # 配置Label模拟按钮的默认样式 l = Label(w, text='CHANGE', bg='#ececec', relief=RAISED, bd=2, padx=8, pady=3) # 绑定鼠标左键点击事件 l.bind('<Button-1>', change_click) l.pack() w.mainloop()
内容的提问来源于stack exchange,提问作者Tommy
相关产品推荐
相关产品推荐

