Kivy - 解析对结构的引用到屏幕

Kivy - parse reference to structure to screen

仍在学习 Python 和 Kivy 并继续 问题,并且对将数据结构(字典)解析到屏幕有点困惑。

将所述数据结构解析到屏幕的最佳方式是什么?

from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.relativelayout import RelativeLayout
from kivy.properties import NumericProperty 

class TestWidget(RelativeLayout):

    def __init__(self, testStructTable, **kwargs):
        super(TestWidget, self).__init__(**kwargs)
        Builder.load_file('test.kv')

        self.testStructTable = testStructTable

        sm = ScreenManager()
        # This line here to parse the data structure?
        sm.add_widget(MainScreen(name='MainScreen'), testStructTable)
        self.add_widget(sm)

        Clock.schedule_interval(MainScreen.update_test_val(testStructTable), 1 / 60)

class MainScreen(Screen):
    testVal = NumericProperty(0)

    def __init__(self, **kwargs):
        super(MainScreen, self).__init__(**kwargs)
        # would like to parse the testStructTable here?
        # self.testStructTable = testStructTable

    def update_test_val(dt, self):
        self.testVal = testStructTable['testVal']

通过在屏幕上显示 setter 来实现:

class TestWidget(RelativeLayout):

    def __init__(self, testStructTable, **kwargs):
        super(TestWidget, self).__init__(**kwargs)
        Builder.load_file('test.kv')

        self.testStructTable = testStructTable
        screen = MainScreen(name='MainScreen')
        screen.set_table(self.testStructTable)        

        sm = ScreenManager()
        sm.add_widget(screen)
        self.add_widget(sm)

        Clock.schedule_interval(MainScreen.update_test_val, 1 / 60)

class MainScreen(Screen):
    testVal = NumericProperty(0)
    testStructTable = {}

    def __init__(self, **kwargs):
        super(MainScreen, self).__init__(**kwargs)

    def set_table(self, testStructTable):
        self.testStructTable = testStructTable

    def update_test_val(self, dt):
        self.testVal = self.testStructTable['testVal']

虽然如果有人有更好的方法来做到这一点,我很想看看如何做。