【问题标题】:Inheriting variables from classes with kivy使用 kivy 从类继承变量
【发布时间】:2019-08-13 14:41:15
【问题描述】:

我有一个 ScreenManagement 和其中几个继承 Screen 类的类。

每个类都有依次声明变量的方法。与程序交互时会发生变化的变量之一是登录变量。如何从图像上的任何类访问这些类中的任何变量?

这是我的带有登录变量的 MainProgram 类:

在具有相同类结构的MessagePage类中,如何从MainProgram类中获取并使用login变量? 换句话说,我需要以某种方式在程序的所有页面之间传递变量。

【问题讨论】:

    标签: python-3.x kivy kivy-language


    【解决方案1】:
    1. id: main_program 添加到 ScreenManagement: 的实例化子 (MainProgram:) 中,以便您可以引用 MainProgram 类中声明的所有属性
    2. 要从MessagePage 访问MainProgram 中的login 属性,请在kv 文件中使用root.manager.ids.main_program.login。在 python 代码中使用self.manager.ids.main_program.login
    3. 添加导入语句,from kivy.properties import StringProperty
    4. 在 MainProgram 类中声明一个类属性 login = StringProperty('')

    片段 - kv 文件

    ScreenManagement:
        RegistrationPage:
        PageOne:
        MainProgram:
            id: main_program
        MessagePage:
    

    片段 - py 文件

    from kivy.properties import StringProperty
    
    ...
    
    class MainProgram(Screen):
        login = StringProperty('')
        ...
    

    【讨论】:

    • 我只尝试获取MainProgram类方法中定义的登录变量,但他没有看到,他看到的是在类中立即声明的函数和变量,但没有在类中声明的变量这个类的方法。如何解决?
    • 您必须在 MainProgram 类中声明类属性 login。详情请参阅更新后的帖子。
    • 谢谢!我想通了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2022-01-18
    • 2013-04-19
    相关资源
    最近更新 更多