2017-04-10 1 views
0

ici Python et Kivy et l'apprentissage en continuant de this question, et je suis un peu confus avec l'analyse d'une structure de données (dictionnaire) à un écran.Kivy - analyser référence à la structure à l'écran

Quelle est la meilleure façon de parsing ladite structure de données à l'écran?

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'] 

Répondre

0

atteint ce en obtenant un setter à l'écran à la place:

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'] 

Bien que si quelqu'un a une meilleure méthode de le faire, je serais curieux de voir comment cela pourrait se faire à la place.