【问题标题】:Updating multiple Labels with kivy使用 kivy 更新多个标签
【发布时间】:2020-04-08 15:54:56
【问题描述】:

您好,我对 python 和 kivy 比较陌生,我一直在环顾四周,但找不到答案,我正在尝试创建一个集线器,可以在其中显示来自我的 rasberry-pi 的实时数据。我使用标签制作了一个时钟小部件,它会更新时间,但是当我尝试添加 CPU 使用率时,只显示一个标签。我认为这些小部件可能会相互覆盖,但我使用了 size_hint 并没有帮助。当我运行下面的代码时,只有 timex 会显示并且只有当我删除 Clock.schedule_interval(display32.timex, (1)) strong> 将显示 *updatex *

非常感谢您的帮助

from kivy.app import App

from kivy.uix.label import Label

from kivy.clock import Clock

from kivy.uix.floatlayout import FloatLayout

import psutil

from kivy.lang import Builder

import time

class Display(Label, FloatLayout):
    def __init__(self):
        super(Display, self).__init__()



    def updatex(self, *args):

        self.cpu2 = psutil.cpu_percent()
        self.text=str(self.cpu2)
        self.size_hint=(.5, .25)
        self.pos=(500, 500)
        self.texture_size=(0.1,0.1)

    def timex(self, *args):
        self.time2 = time.asctime()
        self.text = str(self.time2)
        self.size_hint = (.5, .25)
        self.pos = (30, 500)
        self.size_hint=(0.1,0.1)


class TimeApp(App):
    def build(self):
        display32 = Display()

        Clock.schedule_interval(display32.updatex, (1))
        Clock.schedule_interval(display32.timex, (1))
        return display32

if __name__ == "__main__":
    TimeApp().run()

【问题讨论】:

    标签: python label kivy clock displayobject


    【解决方案1】:

    您可以定义一个小部件,添加两个标签并在小部件上启动时钟,而不是将两个标签都传递给时钟。

    from kivy.app import App
    from kivy.uix.widget import Widget
    from kivy.uix.label import Label
    from kivy.clock import Clock
    import psutil
    import time
    
    class Display(Widget):
        def draw(self, *args):
            self.clear_widgets()
            self.add_widget(Label(text=str(psutil.cpu_percent()), pos=(500, 500)))
            self.add_widget(Label(text=str(time.asctime()), pos=(30, 500)))
    
    class TimeApp(App):
        def build(self):
            display32 = Display()
            Clock.schedule_interval(display32.draw, 1)       
            return display32
    
    if __name__ == '__main__':
        TimeApp().run()
    

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多