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

KivyMD:MDTextField输入同步至Label报AttributeError问题求助

解决AttributeError: 'super' object has no attribute 'getattr'问题

这个错误的核心原因是你错误地尝试通过super()调用getattr方法——Kivy的父类对象并没有这个方法,获取输入框内容应该直接通过控件的ids引用或者直接访问属性。

修正后的代码示例

Python代码

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivymd.app import MDApp

class TodoLayout(BoxLayout):
    def get_data(self):
        # 直接通过self.ids获取输入框内容,赋值给Label
        input_text = self.ids.input_field.text
        self.ids.display_label.text = input_text

class TodoCatApp(MDApp):
    def build(self):
        return TodoLayout()

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

kv文件(命名为todocat.kv,需与App类名对应)

<TodoLayout>:
    orientation: "vertical"
    padding: 20
    spacing: 10

    MDTextField:
        id: input_field
        hint_text: "输入待办事项"
        size_hint_y: None
        height: 50

    MDRaisedButton:
        text: "显示内容"
        on_press: root.get_data()

    MDLabel:
        id: display_label
        text: "等待输入..."
        halign: "center"

关键修改说明

  • 移除get_data方法中所有super().getattr(...)的错误写法,改用self.ids[控件id]直接获取控件实例,再访问其text属性
  • 确保kv文件中每个需要操作的控件都设置了唯一的id,且Python代码中引用的id与kv内一致
  • 通过按钮的on_press事件触发get_data方法,将输入框内容同步到Label

这样修改后就能正常把MDTextField的输入内容显示到Label上,后续你可以在此基础上添加动画猫催办的功能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:40:32