CustomTkinter圆角按钮背景仍存在未消除的直角边缘问题求助
CustomTkinter圆角按钮背景仍存在未消除的直角边缘问题求助
兄弟我瞅了你的问题和代码,大概率是你搞混了CTKButton的fg_color和bg_color属性导致的!
你看,你在on_press和on_release里修改的是按钮的bg_color,但CTKButton的fg_color才是按钮主体的填充色,bg_color其实是按钮与父容器之间的间隙衬底色。你现在改bg_color的操作,其实是在给按钮的直角衬底换颜色,而这个衬底不遵循按钮的corner_radius设置,所以就露出了直角色块,看起来像是按钮背景没裁圆角。
给你几个关键修改点,照着改应该就能解决:
- 调整事件绑定里的颜色修改对象:把
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!
- 统一按钮衬底与父容器颜色:给按钮加上
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背景色统一 )
- 统一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
相关产品推荐
相关产品推荐

