Kivy App的Label组件不更新但Psutil模块可正常获取最新电量数据
Kivy电量显示不刷新问题修复
问题根因
- 电量百分比
percent仅在程序启动时计算了一次,后续没有重新调用psutil.sensors_battery()获取最新电量 - Kivy的
App.run()是阻塞式主事件循环入口,App运行期间外层的while True完全不会执行,也不可能通过重启App的方式刷新数值 - 没有在Kivy的事件循环中绑定UI更新逻辑,直接在框架外修改控件属性无法触发界面重绘
修复代码
from kivy.app import App from kivy.uix.label import Label from kivy.clock import Clock import psutil class Application(App): def build(self): self.battery_label = Label() # 每3秒刷新一次电量,可自行调整间隔时长(单位:秒) Clock.schedule_interval(self.refresh_battery, 3) # 启动时立刻刷新一次避免初始空白 self.refresh_battery() return self.battery_label def refresh_battery(self, dt=None): # 每次刷新都重新读取当前电量 battery = psutil.sensors_battery() self.battery_label.text = f"{battery.percent}%" if __name__ == "__main__": Application().run()
内容的提问来源于stack exchange,提问作者VRV
相关产品推荐
相关产品推荐

