如何让PyQT程序持续刷新一个控件,始终提供最新值?
我正在学习用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