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

KivyMD MDList跳转报Invalid data after declaration及MDCard自适应问题咨询

问题排查与解决方案

1. "Invalid data after declaration"错误修复

错误由以下几个问题共同引发,按顺序修改即可:

  • kv文件开头存在多余的ScreenManager:声明。你在main.py的build方法中已经手动创建了ScreenManager实例并作为根组件返回,kv文件中额外写根级ScreenManager会导致声明冲突,直接删除这一行即可。
  • kv文件中注释格式不规范。你写的# """Secondly, please is there a way to make MDCard auto resize automatically on any screen"""使用了三重引号,kv语言的注释仅需要#开头,不需要额外加引号,删除三重引号改成普通注释格式即可。
  • OneLineIconListItem的事件绑定错误。你使用了on_touch_down直接赋值跳转逻辑,on_touch_down是底层触摸事件,需要接收touch参数且要判断触摸范围,正确做法是使用ListItem自带的on_press事件,写法调整为on_press: app.change_screen("getting_started_screen")即可,和底部导航栏的事件写法保持一致。
  • main.py中存在冗余代码:change_screen方法中前五行给self.sm.current赋值的代码完全多余,只会导致不必要的屏幕切换,直接删除,仅保留最后一句self.sm.current = screen即可。

2. MDCard自适应屏幕尺寸设置

你现在的MDCard设置了size_hint: None, None和固定的size: "280dp", "360dp",所以大小是固定的,要实现自适应只需要修改size_hint参数,指定宽高占父容器的比例即可,示例如下:

MDCard:
    orientation: 'vertical'
    padding: 16
    # 删掉原来的size_hint: None, None和固定size设置
    size_hint: 0.85, 0.65 # 宽度占父布局的85%,高度占父布局的65%,可自行调整比例
    pos_hint: {"center_x": .5, "center_y": .6}
    elevation: 8
    radius: 15

调整后不管屏幕尺寸如何变化,MDCard都会按照设定比例自动适配大小,保持布局一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:48:03