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

向KivyMD的MDList添加ListItem后首项外其余成员均为空白问题求解

问题产生原因

  1. BaseListItem 继承自基础Widget类,本身不具备自动排列子控件的能力,你直接通过add_widget()添加的三个子OneLineListItem默认会堆叠在父控件的(0,0)坐标,尺寸默认填充父控件,导致同一条目内的三个文本控件重叠,多条目添加后不同条目的控件视觉错位堆叠,就会出现所有文本都集中到第一个条目的现象。
  2. 设计逻辑错误:OneLineListItem 本身是完整的列表项组件,设计用途是直接作为MDList的子条目,不应该嵌套在另一个列表项内部,嵌套后布局规则冲突,会导致高度、位置计算全部异常。
  3. 自定义列表项内没有配置对应布局容器,子控件没有水平排列规则,自然无法实现左中右分布的三文本布局。

实现方案

无需嵌套多个OneLineListItem,直接在自定义列表项内部使用水平BoxLayout承载三个不同对齐方式的文本即可,代码如下:

自定义列表项代码

from kivymd.uix.list import BaseListItem
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel

class LynisResultListItem(BaseListItem):
    def __init__(self, lynis_result=None, **kwargs):
        super().__init__(**kwargs)
        # 固定条目高度
        self.height = 60
        # 关闭条目默认底部分隔线,解决黑线问题
        self.divider = None
        # 添加水平布局作为子控件容器
        container = MDBoxLayout(
            orientation='horizontal',
            padding=[16, 0, 16, 0],
            spacing=8
        )
        self.add_widget(container)
        
        # 左侧左对齐类型文本
        type_label = MDLabel(
            text=lynis_result.type if lynis_result else "Suggestion",
            halign='left',
            size_hint_x=0.2
        )
        # 中间居中对齐编码文本
        code_label = MDLabel(
            text=lynis_result.code if lynis_result else "AUTH-9328",
            halign='center',
            size_hint_x=0.3
        )
        # 右侧右对齐消息文本
        msg_label = MDLabel(
            text=lynis_result.message if lynis_result else "",
            halign='right',
            size_hint_x=0.5
        )
        
        container.add_widget(type_label)
        container.add_widget(code_label)
        container.add_widget(msg_label)

列表添加条目代码

# 传入你自己的LynisResult对象生成条目
result_item = LynisResultListItem(lynis_result=你的结果实例)
self.ids.list_LynisResults.add_widget(result_item)

如果需要全局关闭MDList的所有分隔线,直接修改kv配置即可:

MDList:
    id: list_LynisResults
    divider: None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:15:02