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

如何在按下回车键时获取MDTextField输入并添加到滚动列表展示

问题排查及修复方案

现有代码核心问题

  • 事件绑定错误:KV文件中MDTextField当前绑定的on_text事件会在每次输入字符时触发,你需要的是按下回车键触发的on_text_validate事件,且绑定方法需要加括号才会执行调用
  • Python代码缩进错误:INSPECTOR类下的所有方法没有正确缩进,属于基础语法错误
  • 输入内容获取时机错误:仅在on_start阶段获取一次空的输入框内容,后续输入的内容不会同步更新
  • 循环逻辑错误:range(self.list)参数类型错误,range需要接收整数参数,且无需每次触发都遍历所有历史内容添加,会导致列表重复渲染
  • 变量命名不规范:使用Python内置关键字list作为变量名,存在命名冲突风险
  • KV布局结构错误:Screen下的子部件没有正确缩进,会导致布局层级错误

修复后完整代码

main.py

from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.core.window import Window
from kivymd.uix.list import OneLineListItem

Window.size = (480,800)

class INSPECTOR(MDApp):
    def build(self):
        self.theme_cls.primary_palette = "Green"
        screen = Builder.load_file('layout.kv')
        return screen

    def on_start(self):
        # 初始化存储输入内容的列表
        self.record_list = []
        
    def on_enter(self):
        # 实时获取当前输入框内容,去除首尾空白字符
        current_input = self.root.ids.barcode.text.strip()
        # 非空校验,避免添加空内容
        if not current_input:
            return
        # 内容存入列表
        self.record_list.append(current_input)
        # 添加到滚动列表中展示
        self.root.ids.contaniner.add_widget(OneLineListItem(text=current_input))
        # 清空输入框,方便下一次输入
        self.root.ids.barcode.text = ""

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

layout.kv

Screen:
    BoxLayout:
        orientation: 'vertical'
        MDToolbar:
            title: 'INSPECTOR'
            elevation:5

        MDTextField:
            id: barcode
            hint_text: "Scan"
            mode: "rectangle"
            icon_right:'barcode-scan'
            focus: True
            size_hint_x: None
            size_hint_y: None
            pos_hint: {'center_x':0.5,'center_y':0.6}
            width: 400
            required: True
            helper_text_mode: "on_error"
            helper_text: "Enter text"
            # 绑定回车键触发事件
            on_text_validate: app.on_enter()

        GridLayout:
            padding:50
            cols:1
            ScrollView:
                MDList:
                    id: contaniner

功能说明

修改后按下回车键即可自动触发内容添加逻辑,非空内容会自动存入列表同时展示在下方滚动区域,输入框会自动清空等待下一次输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:45:08