如何移除Tkinter中仅含图片的ttk.Button按钮的默认边框
解决ttk图片按钮白色边框问题
你看到的白色边框是ttk.Button默认的边框、高亮效果和浮雕样式,两种可行的修改方案如下:
方案一:自定义ttk样式(推荐)
ttk组件的样式通过ttk.Style统一管理,自定义无框样式适配性最好:
- 初始化样式,添加自定义无框按钮配置:
import tkinter as Tk from tkinter import ttk # 初始化样式实例 style = ttk.Style() # 配置基础无框样式 style.configure( "ImgButton.TButton", borderwidth=0, # 移除默认边框宽度 highlightthickness=0, # 移除选中时的高亮边框 relief="flat", # 取消默认凸起浮雕效果 background="#3366ff" # 和父容器背景色保持一致 ) # 配置交互状态下的样式,避免点击时出现边框 style.map( "ImgButton.TButton", borderwidth=[("active", 0), ("pressed", 0)], relief=[("active", "flat"), ("pressed", "flat")], background=[("active", "#3366ff"), ("pressed", "#3366ff")] )
- 创建按钮时指定自定义样式:
rock_button = ttk.Button( rock_frame, image=image_rock, command=rock, style="ImgButton.TButton" # 应用自定义样式 ) rock_button.place(bordermode=OUTSIDE, height=134, width=107, x=40 , y=200)
方案二:改用原生Tkinter.Button
如果不需要ttk的主题适配能力,原生Button的样式配置更简单:
rock_button = Tk.Button( rock_frame, image=image_rock, command=rock, borderwidth=0, highlightthickness=0, relief="flat", bg="#3366ff", activebackground="#3366ff" # 点击时的背景和父容器保持一致 )
注意:两种方案都需要保证按钮的背景色和父容器rock_frame的bg值完全一致,避免出现边缘色差。如果后续修改了父容器的背景色,对应按钮的背景色也要同步更新。
内容的提问来源于stack exchange,提问作者Ilyess
相关产品推荐
相关产品推荐

