有没有办法从另一个屏幕访问属性(class 变量)

Is there a way to access properties(class variables) from another screen

我正在使用 kivy,我有两个屏幕,一个有 class 个数字属性变量,我有根据情况更改值的方法。第二个屏幕应该用于向用户显示最终值。

class Main(Screen):
    transport_price_value = NumericProperty(0)

    def change_value_on_press(self):
        self.transport_price_value += 10


class Second(Screen):
     def display_transport_price_value(self):
         return str(Main.transport_price_value)


class WindowManager(ScreenManager):
     pass


class Example(App):
     pass

当我单击触发“display_transport_price_value”功能的提交按钮时,returns 名称而不是 属性

的值

因为 Main 只是一个 class 而不是 instance,并且因为在 python 中可以有多个实例,所以你真正需要的是一个获取由 kivy 创建的 Main 实例的方法。我没有测试过,但我认为这会起作用:

class Main(Screen):
    transport_price_value = NumericProperty(0)

    def change_value_on_press(self):
        self.transport_price_value += 10


class Second(Screen):
     def display_transport_price_value(self):
         main_screen = self.manager.get_screen("main")
         return str(main_screen.transport_price_value)


class WindowManager(ScreenManager):
     pass


class Example(App):
     pass

来源: