为什么在需要时Kivy不刷新/更新屏幕?

时间:2020-05-06 17:48:42

标签: python kivy kivy-language

我遇到了这个问题:

已创建一个屏幕,以显示同步事件期间可能持续一分钟的消息。每两秒钟或多或少会收到一条消息。

我正在扩展,当收到消息时,该消息将立即打印。

但是此代码会发生什么情况,即所有消息在整个同步周期结束时立即打印,而不是在每条消息到达时都按预期方式打印。

.py:

class SyncScreen(Screen):
    content = StringProperty()

    def on_enter(self):
        self.content = "Synchronization messages"
        controller.synchronize(self.update_text)

    def update_text(self, msg):    # Callback
        self.content = self.content + msg

.kv:

<SyncScreen>:
    MDBoxLayout:
        orientation: "vertical"
        MDToolbar:
            title: "Synchronization"
        MDBoxLayout:
            orientation: "vertical"
            padding: 10
            TextInput:
                text: root.content
                size_hint: 1.0, 1.0
                multiline: True

1 个答案:

答案 0 :(得分:1)

您的synchronize函数被阻止,Kivy在返回之前无法绘制任何内容。在线程中运行它,或执行类似的操作使其每帧返回(并重新安排)。