在kivy

时间:2016-07-24 22:08:04

标签: python function class variables kivy

我正在用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。

感谢您的帮助!

1 个答案:

答案 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)