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

CustomTkinter圆角按钮背景仍存在未消除的直角边缘问题求助

CustomTkinter圆角按钮背景仍存在未消除的直角边缘问题求助

兄弟我瞅了你的问题和代码,大概率是你搞混了CTKButton的fg_color和bg_color属性导致的!

你看,你在on_press和on_release里修改的是按钮的bg_color,但CTKButton的fg_color才是按钮主体的填充色,bg_color其实是按钮与父容器之间的间隙衬底色。你现在改bg_color的操作,其实是在给按钮的直角衬底换颜色,而这个衬底不遵循按钮的corner_radius设置,所以就露出了直角色块,看起来像是按钮背景没裁圆角。

给你几个关键修改点,照着改应该就能解决:

  1. 调整事件绑定里的颜色修改对象:把bg_color换成fg_color,这才是修改按钮主体颜色的正确方式:
def on_press(event, button, ID):
    button.configure(fg_color="#009A5F")  # 这里改成fg_color!
    open_place(ID)  # Open the place when button is pressed
    return "break"  # Prevent the default button behavior and animation

def on_release(event, button):
    button.configure(fg_color="#00B06F")  # 这里也改成fg_color!
  1. 统一按钮衬底与父容器颜色:给按钮加上bg_color属性,设为和父容器frame的背景色一致,彻底避免衬底露出来:
button = ctk.CTkButton(
    frame, 
    text="Play", 
    fg_color="#00B06F", 
    hover_color="#009A5F", 
    height=40, 
    corner_radius=15,
    bg_color=frame.cget("fg_color")  # 新增这行,和frame背景色统一
)
  1. 统一frame与整体背景色:你给game_name_label设置了bg_color="#111216",但frame默认颜色可能和这个不一样,建议把frame的fg_color也设为#111216,保持风格统一:
frame = ctk.CTkFrame(
    root, 
    width=CWidth, 
    height=CHeight, 
    corner_radius=20,
    fg_color="#111216"  # 新增这行,和label背景色统一
)

这样改完之后,按钮的主体颜色会跟着点击状态正常变化,衬底和父容器完全融合,圆角外的地方就不会再露出奇怪的直角色块啦!

备注:内容来源于stack exchange,提问作者user28944982

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:08:02