【发布时间】:2023-03-09 05:56:01
【问题描述】:
假设我有 3 个类:一个发生事情的“工作类”、一个标签类和一个包含它们的类。 例如,标签类可以是一个状态栏,显示正在工作的某事的状态。我希望我能找到一种方法让标签自动更新要显示的值,因为这个值是在后者内部被更改的工作类的值。
这里有一个示例代码
Builder.load_string('''
<CustomLabel>
text: 'Value is {}'.format(root.value)
<WorkingClass>:
orientation: 'vertical'
Button:
text: 'Update'
on_release: root.update()
<MainLayout>
orientation: 'vertical'
''')
class CustomLabel(Label):
value = NumericProperty()
class WorkingClass(BoxLayout):
def __init__(self, *args, **kwargs):
super(WorkingClass, self).__init__(*args, **kwargs)
self.a = 5
def update(self):
self.a += 1
print(self.a)
class MainLayout(BoxLayout):
def __init__(self, *args, **kwargs):
super(MainLayout, self).__init__(*args, **kwargs)
self.workingClass = WorkingClass()
self.customLabel = CustomLabel(value=self.workingClass.a)
self.add_widget(self.customLabel)
self.add_widget(self.workingClass)
class MyApp(App):
def build(self):
return MainLayout()
if __name__ == "__main__":
MyApp().run()
有没有办法用属性或其他方法来做到这一点?因为我不想每次更改值时都需要手动更新(不知何故)标签。无论如何要做到这一点?
【问题讨论】: