如何从 KivyMD 文本字段中获取文本?
How to get text from a KivyMD text field?
我正在尝试从文本字段中获取文本,但似乎无法正确获取。我想从 LoginScreen 中的 MDTextField 获取文本。这是我的 .kv 文件:
ScreenManager:
LoginScreen:
VaultScreen:
<LoginScreen>:
id: login
name: 'login'
MDTextField:
id: master_password
hint_text: "Master Password"
size_hint_x: None
width: 200
font_size: 18
pos_hint: {"center_x": 0.5, "center_y": 0.5}
password: True
MDRectangleFlatButton:
text: "Unlock"
font_size: 12
pos_hint: {"center_x": 0.5, "center_y": 0.4}
on_release: app.verify()
<VaultScreen>:
name: 'vault'
MDLabel:
text: 'Vault'
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
pos_hint: {'center_x': 0.5, 'center_y': 0.1}
on_press: root.manager.current = 'login'
这是我的 .py 文件:
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
class ScMn(ScreenManager):
pass
class LoginScreen(Screen):
pass
class VaultScreen(Screen):
pass
class App(MDApp):
def build(self):
screen = Builder.load_file('passr.kv')
return screen
def verify(self):
# this is where I want to get the text
master = self.root.ids.login.master_password.text
pass
App().run()
当我尝试获取 self.root.ids 的内容时,我得到一个空字典。
您的代码:
self.root.ids.login.master_password.text
正在尝试访问 self.root
的 ids
,但是 self.root
是 ScreenManager
,并且没有 ids
。 kv
中定义的 ids
存储在小部件的 ids
字典中,该小部件是包含 id
定义的规则的根。由于您在 <LoginScreen>
规则中定义了一些 ids
,因此 ids
将位于 LoginScreen
对象中。因此,您必须获得对 LoginScreen
的引用,您可以使用 get_screen()
方法来实现,如下所示:
self.root.get_screen('login').ids.master_password.text
我正在尝试从文本字段中获取文本,但似乎无法正确获取。我想从 LoginScreen 中的 MDTextField 获取文本。这是我的 .kv 文件:
ScreenManager:
LoginScreen:
VaultScreen:
<LoginScreen>:
id: login
name: 'login'
MDTextField:
id: master_password
hint_text: "Master Password"
size_hint_x: None
width: 200
font_size: 18
pos_hint: {"center_x": 0.5, "center_y": 0.5}
password: True
MDRectangleFlatButton:
text: "Unlock"
font_size: 12
pos_hint: {"center_x": 0.5, "center_y": 0.4}
on_release: app.verify()
<VaultScreen>:
name: 'vault'
MDLabel:
text: 'Vault'
halign: 'center'
MDRectangleFlatButton:
text: 'Back'
pos_hint: {'center_x': 0.5, 'center_y': 0.1}
on_press: root.manager.current = 'login'
这是我的 .py 文件:
from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
class ScMn(ScreenManager):
pass
class LoginScreen(Screen):
pass
class VaultScreen(Screen):
pass
class App(MDApp):
def build(self):
screen = Builder.load_file('passr.kv')
return screen
def verify(self):
# this is where I want to get the text
master = self.root.ids.login.master_password.text
pass
App().run()
当我尝试获取 self.root.ids 的内容时,我得到一个空字典。
您的代码:
self.root.ids.login.master_password.text
正在尝试访问 self.root
的 ids
,但是 self.root
是 ScreenManager
,并且没有 ids
。 kv
中定义的 ids
存储在小部件的 ids
字典中,该小部件是包含 id
定义的规则的根。由于您在 <LoginScreen>
规则中定义了一些 ids
,因此 ids
将位于 LoginScreen
对象中。因此,您必须获得对 LoginScreen
的引用,您可以使用 get_screen()
方法来实现,如下所示:
self.root.get_screen('login').ids.master_password.text