如何让PyQT程序持续刷新一个控件,始终提供最新值?

3 投票
1 回答
935 浏览
提问于 2025-04-17 03:57

我正在学习用PyQT4和Python编程。我想写一个简单的应用程序,能够在QLCD小部件中显示当前的CPU使用率。为了获取CPU使用率,我使用了psutils模块。

问题是,CPU使用率并不是一直更新的——它只在应用程序启动的那一刻记录了CPU使用率(我猜的),然后就停止了。所以,我想找一种循环的方式,希望它不会消耗太多CPU资源。

这是我目前的代码:

self.wpCpuUsage.display(cpu_percent(interval=1))

这段代码是在QMainWindow类的__init__方法里面。

我试着把它放在一个for循环里,但这样的话,它就会一直循环,基本上是在等待循环完成,然后再执行程序。

有人能帮忙吗?

1 个回答

7

你可以使用一个叫做 QTimer 的对象,并且可以设置一个回调函数。

像下面这样应该可以正常工作:

def call_this():
    self.wpCpuUsage.display(cpu_percent(interval=1))

self.my_timer = QtCore.QTimer()
self.my_timer.timeout.connect(call_this)
self.my_timer.start(1000) #1 second interval

撰写回答