Python kivymd:AttributeError:&x27;超级';对象没有属性'__getattr';

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

这个.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.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')