如何更新.kv中的对象

时间:2019-08-27 09:13:50

标签: kivy kivy-language

当我更新.py中的ObjectProperty时,我想更新.kv中的当前对象(如果它是ObjectProperty以外的其他类型,则可以正常工作),但是当我更新ObjectProperty时,不会影响.kv

.py:

from kivy.app import App
from kivy import properties as kp
from kivy.event import EventDispatcher
from kivy.uix.boxlayout import BoxLayout

class TestEvent(EventDispatcher):
    def __init__(self, name):
        super().__init__()
        self.name = name


class Main(BoxLayout):
    test_event = kp.ObjectProperty(TestEvent("a"))

    def change_test(self, *args):
        print("change_test", args)
        self.test_event = TestEvent("b")
        print(self.test_event.name)


class TestApp(App):
    def build(self):
        return Main()


if __name__ == '__main__':
    TestApp().run()

.kv:

<Main>:
    Button:
        text: "test: %s" % root.test_event.name
        on_press: root.change_test()

当我按下按钮时,我希望按钮变为b

在控制台中有效:

change_test ()
b

0 个答案:

没有答案