Kivy代码报错AttributeError: 'NoneType'对象无text属性求助
解决Kivy中
AttributeError: 'NoneType' object has no attribute 'text'的问题 我来帮你搞定这个报错!你遇到的问题核心是你的self.product变量并没有正确关联到KV文件里的输入框控件,它的值一直是None,所以调用.text的时候就触发了AttributeError。
错误原因分析
在你的KV代码里,你给BoxLayout加了product: product这行代码,这其实是给BoxLayout对象本身添加了一个名为product的属性,指向id为product的输入框。但你的Main类里定义的product = ObjectProperty(None)并没有和这个控件绑定起来,所以self.product始终是None,自然访问不了.text属性。
两种解决方法
方法一:直接通过root.ids获取控件(最简单)
不需要额外定义ObjectProperty,直接通过应用根控件的ids字典来访问输入框,这是Kivy里获取控件最常用的方式:
import kivy from selenium import webdriver import requests from selectorlib import Extractor from selenium.webdriver.common.keys import Keys from kivymd.app import MDApp from kivy.lang import Builder KV = ''' BoxLayout: size_hint: .8, .8 pos_hint: {"center_x": .5, "center_y": .5} spacing: dp(100) orientation: "vertical" MDTextFieldRound: id: product hint_text: 'Enter a product' icon_left: 'magnify' on_text_validate: app.System() ''' class Main(MDApp): def build(self): return Builder.load_string(KV) def System(self): # 直接通过根控件的ids字典获取输入框 print(self.root.ids.product.text) if __name__ == "__main__": Main().run()
方法二:正确绑定ObjectProperty
如果你一定要用ObjectProperty来管理控件,需要在build方法里手动将属性指向输入框:
import kivy from kivy.properties import ObjectProperty from selenium import webdriver import requests from selectorlib import Extractor from selenium.webdriver.common.keys import Keys from kivymd.app import MDApp from kivy.lang import Builder KV = ''' BoxLayout: size_hint: .8, .8 pos_hint: {"center_x": .5, "center_y": .5} spacing: dp(100) orientation: "vertical" MDTextFieldRound: id: product hint_text: 'Enter a product' icon_left: 'magnify' on_text_validate: app.System() ''' class Main(MDApp): product = ObjectProperty(None) def build(self): root = Builder.load_string(KV) # 将类的product属性绑定到输入框控件 self.product = root.ids.product return root def System(self): print(self.product.text) if __name__ == "__main__": Main().run()
额外说明
原来KV里的product: product这行代码完全是多余的,它并没有帮你把输入框绑定到Main类的属性上,反而容易造成混淆,所以两种方法里都把这行删掉了。
内容的提问来源于stack exchange,提问作者Bernardo Olisan
相关产品推荐
相关产品推荐

