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

如何在Python的customtkinter中为CTkFrame内的图片设置自定义圆角?

解决CTkFrame内图片无法适配圆角的问题

方案一:通过PIL给原图添加圆角

直接使用PIL对图片进行圆角处理,生成带圆角的图片后再转为CTkImage,从根源解决边角外露问题。

首先实现一个给图片添加圆角的工具函数:

from PIL import Image, ImageDraw

def add_image_corners(image, corner_radius):
    # 创建与原图尺寸一致的透明遮罩
    mask = Image.new('L', image.size, 0)
    draw = ImageDraw.Draw(mask)
    # 绘制圆角矩形遮罩
    draw.rounded_rectangle((0, 0, image.size[0], image.size[1]), corner_radius, fill=255)
    # 应用遮罩到原图
    image.putalpha(mask)
    return image

修改原有代码,加载图片时调用该函数:

import customtkinter
from PIL import Image

image_path = "你的图片路径"

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        frame = customtkinter.CTkFrame(self, width=200, height=111, corner_radius=5)
        frame.pack()

        # 加载图片并添加圆角
        original_image = Image.open(image_path)
        rounded_image = add_image_corners(original_image, 5)
        image = customtkinter.CTkImage(rounded_image, size=(200, 111))

        image_label = customtkinter.CTkLabel(frame, image=image, text="")
        image_label.pack(fill="both", expand=True)

if __name__ == "__main__":
    app = App()
    app.mainloop()

方案二:通过组件样式配合实现圆角适配

利用CTkLabel的corner_radius属性,让Label的圆角与CTkFrame保持一致,同时让Label填充整个Frame,实现视觉上的圆角匹配:

import customtkinter
from PIL import Image

image_path = "你的图片路径"

class App(customtkinter.CTk):
    def __init__(self):
        super().__init__()

        frame_radius = 5
        frame = customtkinter.CTkFrame(self, width=200, height=111, corner_radius=frame_radius)
        frame.pack()

        image = customtkinter.CTkImage(Image.open(image_path), size=(200, 111))

        # 设置Label的圆角与Frame一致,同时填充整个Frame
        image_label = customtkinter.CTkLabel(frame, image=image, text="", corner_radius=frame_radius)
        image_label.pack(fill="both", expand=True, padx=0, pady=0)

if __name__ == "__main__":
    app = App()
    app.mainloop()

方案说明

  • 方案一的优势是图片本身带有圆角,无论后续放到哪个组件中都能保持样式,适合需要复用带圆角图片的场景。
  • 方案二更轻量化,不需要修改图片文件,仅通过组件属性配置实现适配,适合快速调整UI样式的场景。

内容的提问来源于stack exchange,提问作者DYD

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:32:42