如何修改Tkinter Checkbox的白色框体颜色?
修改Tkinter Checkbox白色框体颜色的方法
原生的tk.Checkbutton无法直接修改复选框的白色框体颜色——这部分是由系统主题渲染的,没有直接对应的配置参数。要实现自定义框体颜色,你需要用自定义状态图片替换默认的复选框样式,具体步骤如下:
- 准备不同状态的自定义复选框图片(未选中、选中、激活未选中、激活选中),可以用代码绘制或提前制作好图片文件。
- 将图片转换为Tkinter可识别的
PhotoImage对象。 - 通过
image和selectimage参数将图片绑定到Checkbutton上,同时设置compound='left'让文字和图片对齐。
代码示例(用PIL生成自定义颜色的复选框)
import tkinter as tk from PIL import Image, ImageDraw, ImageTk root = tk.Tk() frame1 = tk.Frame(root, bg='green') frame1.pack(padx=20, pady=20) # 生成未选中状态的复选框(灰色边框+绿色背景) img_unchecked = Image.new('RGBA', (16, 16), (0, 255, 0, 255)) draw = ImageDraw.Draw(img_unchecked) draw.rectangle([(0,0), (15,15)], outline='#888888', width=2) tk_img_unchecked = ImageTk.PhotoImage(img_unchecked) # 生成选中状态的复选框(灰色边框+蓝色对勾+绿色背景) img_checked = Image.new('RGBA', (16, 16), (0, 255, 0, 255)) draw = ImageDraw.Draw(img_checked) draw.rectangle([(0,0), (15,15)], outline='#888888', width=2) draw.line([(3,7), (7,11), (13,3)], fill='blue', width=2) tk_img_checked = ImageTk.PhotoImage(img_checked) # 创建绑定自定义图片的Checkbutton check2 = tk.Checkbutton( frame1, text="Checkbox", bg='green', fg='blue', highlightthickness=0, activeforeground='blue', activebackground='green', image=tk_img_unchecked, selectimage=tk_img_checked, compound='left' # 图片在文字左侧 ) check2.pack() root.mainloop()
补充说明
- 若不想用PIL,也可以直接加载提前制作好的png图片,通过
ImageTk.PhotoImage(file='unchecked.png')实现。 - 必须保留
PhotoImage对象的引用(如示例中的tk_img_unchecked),否则会被Python垃圾回收机制回收,导致图片无法显示。
内容的提问来源于stack exchange,提问作者DavidJambonski
相关产品推荐
相关产品推荐

