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

Python Kivy-将对结构的引用解析到屏幕,python,screen,kivy,Python,Screen,Kivy,还在这里学习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

还在这里学习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']
虽然如果有人有一个更好的方法来做这件事,我会很感兴趣,看看如何可以做到这一点