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

如何通过搜索栏获取MDCard数据并转移至不同MDScreen的MDCard

问题解决:KivyMD搜索并转移MDCard内容

问题背景

在.kv文件的searched_list中包含100余个MD3Card,需要实现搜索功能:通过搜索栏输入关键词,找到匹配的卡片,并将这些卡片的内容复制到search_results页面的search_list中,但现有函数无法正常运行。

原有代码的问题

  1. 直接给self.ids.search_list赋值字符串是错误操作,search_list是MDList组件,需通过添加子组件来展示内容
  2. 未遍历searched_list中的所有卡片进行关键词匹配
  3. clear_results函数仅清空搜索框,未清理search_list中的历史结果

修正后的实现代码

Python类代码(AllGimsScreen)

from kivymd.uix.screen import MDScreen
from Screens.AllGimsScreen.components.card import MD3Card


class AllGimsScreen(MDScreen):

    def searching(self, search_text):
        if not search_text.strip():
            return
        
        # 清空旧搜索结果
        self.clear_search_list()
        
        # 设置搜索标签并切换页面
        self.ids.search_label.text = search_text
        self.ids.screen_manager.current = "search_results"
        
        # 遍历源卡片列表,匹配关键词
        for card in self.ids.searched_list.children:
            # 不区分大小写匹配卡片文本
            if search_text.lower() in card.text.lower():
                # 复制原卡片属性创建新卡片
                new_card = MD3Card()
                new_card.source = card.source
                new_card.text = card.text
                # 添加到搜索结果列表
                self.ids.search_list.add_widget(new_card)

    def clear_results(self):
        # 同时清空搜索框和结果列表
        self.ids.search_field.text = ""
        self.clear_search_list()

    def clear_search_list(self):
        # 封装清空结果列表的逻辑
        self.ids.search_list.clear_widgets()

kv文件可选优化

若希望列表自适应行列数量,可将searched_list和search_list的固定cols/rows改为自适应属性,避免固定行数导致的布局溢出:

MDList:
    id: searched_list
    adaptive_col: True
    adaptive_row: True
    spacing: "18dp"
    padding: "24dp"

# 搜索结果页面的MDList同理
MDList:
    id: search_list
    adaptive_col: True
    adaptive_row: True
    spacing: "18dp"
    padding: "24dp"

代码说明

  • searching函数:先清空旧结果,遍历源卡片列表完成关键词匹配,复制匹配卡片的属性创建新组件并添加到结果列表
  • clear_results函数:同时完成搜索框清空和结果列表清理
  • clear_search_list函数:封装结果列表清空逻辑,避免代码重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:52:44