gpt4 book ai didi

python - PyQt4:使用 QTimer 不断更新进度条

转载 作者:行者123 更新时间:2023-12-01 02:29:59 25 4
gpt4 key购买 nike

我有一个带有三个进度条的简单对话框,我想不断更新它(显示系统资源使用情况)。通过阅读文档,QTimer 是每 x 毫秒触发一个函数的正确方法(这将更新进度条)。但是,我无法让它工作,而且我不太清楚为什么。将计时器超时信号连接到更新函数似乎相对简单,但它似乎永远不会触发。

这是我的代码:

import sys
from PyQt4 import QtGui, QtCore
import psutil

class Tiny_System_Monitor(QtGui.QWidget):
def __init__(self):
super(Tiny_System_Monitor, self).__init__()
self.initUI()

def initUI(self):
mainLayout = QtGui.QHBoxLayout()

self.cpu_progressBar = QtGui.QProgressBar()
self.cpu_progressBar.setTextVisible(False)
self.cpu_progressBar.setOrientation(QtCore.Qt.Vertical)
mainLayout.addWidget(self.cpu_progressBar)

self.vm_progressBar = QtGui.QProgressBar()
self.vm_progressBar.setOrientation(QtCore.Qt.Vertical)
mainLayout.addWidget(self.vm_progressBar)

self.swap_progressBar = QtGui.QProgressBar()
self.swap_progressBar.setOrientation(QtCore.Qt.Vertical)
mainLayout.addWidget(self.swap_progressBar)

self.setLayout(mainLayout)

timer = QtCore.QTimer()
timer.timeout.connect(self.updateMeters)
timer.start(1000)

def updateMeters(self):
cpuPercent = psutil.cpu_percent()
vmPercent = getattr(psutil.virtual_memory(), "percent")
swapPercent = getattr(psutil.swap_memory(), "percent")

self.cpu_progressBar.setValue(cpuPercent)
self.vm_progressBar.setValue(vmPercent)
self.swap_progressBar.setValue(swapPercent)
print "updated meters"

def main():
app = QtGui.QApplication(sys.argv)
ex = Tiny_System_Monitor()

ex.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

最佳答案

您必须保留对计时器对象的引用,否则当 initUI 返回时它将立即被垃圾回收:

class Tiny_System_Monitor(QtGui.QWidget):
...
def initUI(self):
...
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.updateMeters)
self.timer.start(1000)

关于python - PyQt4:使用 QTimer 不断更新进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46940232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com