Python 3.x 使用kivy从类继承变量

Python 3.x 使用kivy从类继承变量,python-3.x,kivy,kivy-language,Python 3.x,Kivy,Kivy Language,我有一个ScreenManagement和几个继承Screen类的类 每个类都有方法,在这些方法中依次声明变量。与程序交互时发生变化的一个变量是login变量。如何从映像上的任何类访问这些类中的任何变量 这是我的MainProgram类,带有登录变量: 如何从具有相同类结构的MessagePage类中的MainProgram类获取并使用login变量? 换句话说,我需要以某种方式在程序的所有页面之间传递变量 将id:main\u program添加到ScreenManagement:的实例化

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

每个类都有方法,在这些方法中依次声明变量。与程序交互时发生变化的一个变量是login变量。如何从映像上的任何类访问这些类中的任何变量

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

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

  • id:main\u program
    添加到
    ScreenManagement:
    的实例化子项(
    MainProgram:
    ),以便可以引用类MainProgram中声明的所有属性
  • 要从
    MessagePage
    访问
    MainProgram
    中的
    login
    属性,请使用kv文件中的
    root.manager.ids.main\u program.login
    。在python代码中使用self.manager.ids.main_程序.login
  • 添加导入语句,
    来自kivy.properties导入StringProperty
  • 在类MainProgram中声明类属性,
    login=StringProperty(“”)
  • 代码片段-kv文件 代码片段-py文件
    我只尝试获取MainProgram类方法中定义的login变量,但他没有看到它,他看到的是类中立即声明的函数和变量,而不是该类方法中声明的变量。如何解决这个问题?您必须在class Main程序中声明class属性,
    login
    。详情请参阅更新后的帖子。谢谢!我想出来了
    ScreenManagement:
        RegistrationPage:
        PageOne:
        MainProgram:
            id: main_program
        MessagePage:
    
    from kivy.properties import StringProperty
    
    ...
    
    class MainProgram(Screen):
        login = StringProperty('')
        ...