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

如何移除Tkinter中仅含图片的ttk.Button按钮的默认边框

解决ttk图片按钮白色边框问题

你看到的白色边框是ttk.Button默认的边框、高亮效果和浮雕样式,两种可行的修改方案如下:

方案一:自定义ttk样式(推荐)

ttk组件的样式通过ttk.Style统一管理,自定义无框样式适配性最好:

  1. 初始化样式,添加自定义无框按钮配置:
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")]
)
  1. 创建按钮时指定自定义样式:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:51:01