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

如何修改Kivy/KivyMd中MDCard内图片的边角样式?

实现MDCard内Image的指定边角圆角效果

要实现如图所示的图片边角修改效果,使用的组件为MDCard和Image:

图片示例

实现方案(基于KivyMD)

如果使用KivyMD框架开发,可通过以下简单方式实现指定边角的圆角效果:

方法一:利用组件自带的radius属性+Canvas裁剪

通过设置MDCard和内部Image的radius属性,指定需要圆角的边角,同时给Image添加Canvas裁剪避免内容溢出:

from kivy.lang import Builder
from kivymd.app import MDApp

KV = '''
MDBoxLayout:
    padding: "20dp"
    MDCard:
        size_hint: None, None
        size: "300dp", "200dp"
        # 格式:[左上角, 右上角, 右下角, 左下角],数值为圆角半径
        radius: ["20dp", 0, 0, "20dp"]
        Image:
            source: "your_image.png"
            allow_stretch: True
            keep_ratio: True
            size_hint: 1, 1
            # 同步设置Image的圆角裁剪,匹配Card的边角
            canvas.before:
                Color:
                    rgba: 1, 1, 1, 1
                RoundedRectangle:
                    pos: self.pos
                    size: self.size
                    radius: ["20dp", 0, 0, "20dp"]
'''

class DemoApp(MDApp):
    def build(self):
        return Builder.load_string(KV)

if __name__ == "__main__":
    DemoApp().run()

关键说明

  • radius属性的列表顺序对应左上、右上、右下、左下四个角,设置需要圆角的角为非0值即可实现指定边角效果
  • 给Image添加Canvas裁剪是为了防止图片内容超出MDCard的圆角区域,保证视觉统一
  • MDCard的阴影会自动适配圆角设置,无需额外处理

如果需要更复杂的不规则边角效果,可通过自定义蒙版图片或Shader实现,但普通圆角场景下方法一足够高效简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 15:45:06