代码之家  ›  专栏  ›  技术社区  ›  meow

错误:回调必须是可调用的Kivymd时钟

  •  0
  • meow  · 技术社区  · 1 年前

    我正在将数据从服务器传输到标签小部件。我每秒更新一次窗口,这样来自服务器的新数据就可以在窗口中看到,而无需重新启动窗口。抱歉,我刚开始和kivymd一起工作

    from kivy.lang import Builder
    from kivy.clock import Clock
    from kivy.uix.boxlayout import BoxLayout
    from kivymd.app import MDApp
    from socket import *
    
    
    from kivymd.uix.label import MDLabel
    
    
    
    
    class TestApp(MDApp):
       def build(self):
           client = socket(
               AF_INET, SOCK_STREAM
           )
    
    
           client.connect(('192.168.5.99', 7000))
           data = client.recv(1024)
           msg = data.decode('utf-8')
           label1 = MDLabel(font_style="H5", pos_hint={'center_x': 0.5, 'center_y': 0.5})
           Clock.schedule_interval(msg, 1)
           return label1
    TestApp().run()

    我尝试在为True时以无限循环的方式更新数据。我希望我的小部件能够不断更新,并从服务器接收数据而不会出错。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Marcus    1 年前

    在您的代码中, msg 将是一个 str 但是 Clock.schedule_interval 期望Callable(函数)作为第一个参数。

    您需要定义一个函数och lambda表达式,以处理计划事件发生时您想要发生的任何事情。 See the documentation 了解更多信息。

    但是,您需要考虑设置接收套接字并在接收到的数据到达时存储它。然后,在callable中使用该数据 时钟.时间表_间隔 触发器。