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
相关产品推荐
相关产品推荐

