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']
虽然如果有人有更好的方法来做到这一点,我很想看看如何做。
仍在学习 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']
虽然如果有人有更好的方法来做到这一点,我很想看看如何做。