【问题标题】:Use variables from one Screen on another in kivy在kivy中使用另一个屏幕上的变量
【发布时间】:2016-07-24 22:08:03
【问题描述】:

我正在用 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 没有定义。

感谢您的帮助!

【问题讨论】:

    标签: python function class variables kivy


    【解决方案1】:

    最简单的方法是在屏幕管理器中定义一个名为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)

    【讨论】:

    • 我不认为你明白我的意思,除非我不明白(这可能是这种情况,我是相当新的)。当我调用“MainScreen.ids.username.text”时,它不起作用。那么,如何在 LoggedInScreen 中获取 MainScreen 上的 TextInput 框之一的文本?
    • @LoganDarby 我明白你的意思。您想在屏幕之间传递数据,我为您提供了一个简单的解决方案。使用屏幕管理器是一个很好的做法,因为它已经管理了屏幕。 MainScreen.ids.username.text 不起作用,因为您正在访问一个类,而不是一个对象。对象作为子小部件存储在屏幕管理器中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 2021-07-29
    • 2022-01-12
    • 1970-01-01
    • 2015-06-07
    相关资源
    最近更新 更多