我正在用kivy制作应用程序,在我的kv文件中,我有一个名为MainScreen的屏幕,它有两个TextInput框。当我按下按钮时,屏幕将变为LoggedInScreen。如何将输入从MainScreen上的TextInput框传递到LoggedInScreen,以便我可以将它们用作我在main.py中定义的函数的位置参数?这就是我尝试过的(仅限相关代码):
<LoggedInScreen>:
name: 'loggedin'
FloatLayout:
TextInput:
#This is not working
text: root.auth(MainScreen.ids.username.text, MainScreen.ids.password.txt)
font_name: 'PCBius.ttf'
background_color: (73/255,73/255,73/255,1)
keyboard_mode: 'managed'
readonly: True
size: 405, self.height
pos: 495,0
<MainScreen>:
name:'main'
FloatLayout:
TextInput:
id: username
multiline: False
size_hint: self.width/self.width/5, self.height/self.height/16
pos: 200,292
TextInput:
id: password
password: True
multiline: False
size_hint: self.width/self.width/5, self.height/self.height/16
pos: 200,232
但它会输出一个错误,说明未定义MainScreen。
感谢您的帮助!
答案 0 :(得分:0)
最简单的方法是在屏幕管理器中定义一个名为auth_success
的新方法,该方法负责这两个屏幕:
class MyScreenManager(ScreenManager):
...
def auth_success(self, username, password):
self.loggedin.username = username
self.loggedin.password = password
self.current = 'loggedin'
现在,当用户在主屏幕中成功进行身份验证时,请致电self.parent.auth_success(self.ids.username.text, self.ids.username.password)
。