Python/KivyMD:如何从 python/kivymd 中的 MDScreen 中的 MDTextField 打印文本
Python/KivyMD: How to print the text from a MDTextField that is inside an MDScreen in python/kivymd
您好,我是 kivymd 的新手,我正在尝试打印用户在按下按钮时在屏幕内的 MDTextField 中插入的文本。通常我会使用 self.screen.ids.name_of_id.text 来访问 .py 文件中的文本,但是在使用屏幕时这似乎不起作用并给出错误 AttributeError: 'super' 对象没有属性 'getattr'。有没有办法从 .py 文件访问文本?
我的 .kv 片段
ScreenManager:
ForgotPassword:
Login:
ResetPassword:
Main:
<ForgotPassword@Screen>
name: "forgot"
MDFloatLayout:
MDTextField:
id: forgot_email
hint_text: "Email"
size_hint: .7, None
pos_hint: {"center_x": .5}
MDFillRoundFlatButton:
text: " Requesitar Nova Password "
md_bg_color: 0, 0.4, 1, 1
text_color: 1, 1, 1, 1
font_size: 16
pos_hint: {"center_x": .5, "center_y": .15}
on_press: app.forgot_password()
我的.py代码
class MainApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "Blue"
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_hue = "500"
self.screen = Builder.load_file("Backup.kv")
return self.screen
def forgot_password(self):
print(self.screen.ids.forgot_email.text)
MainApp().run()
您的 print()
语句中的 self.screen
是 ScreenManager
,在您的情况下,它没有 ids
,从而导致错误。 ids
仅在 kv
中每个规则的根中可用。所以,在你的kv
中,只有ScreenManager
和ForgotPassword
可以有ids
。但是ScreenManager
中没有定义ids
,所以也就没有ids
。 forgot_email
是在 ForgotPassword
规则下定义的,因此 id
将出现在 ForgotPassword
Screen
实例的 ids
中。因此,要访问 MDTextField
,请尝试:
def forgot_password(self):
print(self.screen.get_screen('forgot').ids.forgot_email.text)
您好,我是 kivymd 的新手,我正在尝试打印用户在按下按钮时在屏幕内的 MDTextField 中插入的文本。通常我会使用 self.screen.ids.name_of_id.text 来访问 .py 文件中的文本,但是在使用屏幕时这似乎不起作用并给出错误 AttributeError: 'super' 对象没有属性 'getattr'。有没有办法从 .py 文件访问文本?
我的 .kv 片段
ScreenManager:
ForgotPassword:
Login:
ResetPassword:
Main:
<ForgotPassword@Screen>
name: "forgot"
MDFloatLayout:
MDTextField:
id: forgot_email
hint_text: "Email"
size_hint: .7, None
pos_hint: {"center_x": .5}
MDFillRoundFlatButton:
text: " Requesitar Nova Password "
md_bg_color: 0, 0.4, 1, 1
text_color: 1, 1, 1, 1
font_size: 16
pos_hint: {"center_x": .5, "center_y": .15}
on_press: app.forgot_password()
我的.py代码
class MainApp(MDApp):
def build(self):
self.theme_cls.primary_palette = "Blue"
self.theme_cls.theme_style = "Light"
self.theme_cls.primary_hue = "500"
self.screen = Builder.load_file("Backup.kv")
return self.screen
def forgot_password(self):
print(self.screen.ids.forgot_email.text)
MainApp().run()
您的 print()
语句中的 self.screen
是 ScreenManager
,在您的情况下,它没有 ids
,从而导致错误。 ids
仅在 kv
中每个规则的根中可用。所以,在你的kv
中,只有ScreenManager
和ForgotPassword
可以有ids
。但是ScreenManager
中没有定义ids
,所以也就没有ids
。 forgot_email
是在 ForgotPassword
规则下定义的,因此 id
将出现在 ForgotPassword
Screen
实例的 ids
中。因此,要访问 MDTextField
,请尝试:
def forgot_password(self):
print(self.screen.get_screen('forgot').ids.forgot_email.text)