使用 kivy 更新多个标签

Updating multiple Labels with kivy

你好,我对 python 和 kivy 比较陌生,我一直在四处寻找,但我找不到答案,我正在尝试建立一个中心,我可以在其中显示我的实时数据树莓派。我使用标签制作了一个时钟小部件,它会更新时间,但是当我尝试添加我的 CPU 用法时,只显示一个标签。我认为这些小部件可能会相互覆盖,但我使用了 size_hint 并且它无济于事。当我 运行 下面的代码时,只有 timex 会出现,并且只有当我删除 Clock.schedule_interval(display32.timex, (1)) 将显示 *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()

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

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()