Python kivymd:AttributeError:&x27;超级';对象没有属性'__getattr';
这个.kv文件通过Python kivymd:AttributeError:&x27;超级';对象没有属性'__getattr';,python,kivy,mobile-application,kivymd,Python,Kivy,Mobile Application,Kivymd,这个.kv文件通过Builder.load\u文件('style.kv') 代码行: print(self.root.ids.username.text) 正在尝试通过应用程序的根小部件访问用户名id,但根小部件是屏幕管理器,不包含该id。根据您的kv,在登录小部件中定义了用户名id 您可以使用ScreenManager的get\u Screen()方法访问username屏幕小部件,如下所示: print(self.root.get_screen('sign in').ids.usernam
Builder.load\u文件('style.kv')
代码行:
print(self.root.ids.username.text)
正在尝试通过应用程序的根小部件访问用户名
id
,但根小部件是屏幕管理器
,不包含该id
。根据您的kv
,在登录
小部件中定义了用户名
id
您可以使用ScreenManager
的get\u Screen()
方法访问username
屏幕
小部件,如下所示:
print(self.root.get_screen('sign in').ids.username.text)
请注意,这些行:
se = ScreenManager()
se.add_widget(Sign_in(name='sign in'))
se.add_widget(Sign_up(name='sign up'))
正在创建另一个小部件树,该小部件树实际上未在您的应用程序中使用。使用的小部件树由以下行构建:
return Builder.load_file('style.kv')
因此,上面这三行可以去掉。我想给未来的研究人员增加一点,那就是增加自我。到您正在传递的任何变量
例如,如果要将小部件中的变量传递给应用程序,则必须将应用程序中的变量声明为self.some_variable=self.self.root.get_screen('sign in').ids.username.text。然后可以使用此变量执行函数
在上面的代码中,您可能希望将username.text与存储的用户名进行比较。如果您在应用程序中设置变量some_variable=self.root.get_screen('sign-in').ids.username.text,则会出现相同的错误
我花了好几天的时间才弄明白,所以我希望有一天它能帮助别人。谢谢你的帮助,帮我澄清了错误
se = ScreenManager()
se.add_widget(Sign_in(name='sign in'))
se.add_widget(Sign_up(name='sign up'))
return Builder.load_file('style.kv')