使用 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()
你好,我对 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()