Ich habe einen einfachen Dialog mit drei Fortschrittsbalken, die ich ständig aktualisieren möchte (Anzeige der Systemressourcennutzung). Aus dem Lesen der Dokumente ist QTimer
der richtige Weg, um eine Funktion alle x
Millisekunden (die die Fortschrittsbalken aktualisieren würde) zu feuern. Ich kann es jedoch nicht zur Arbeit bringen und weiß nicht genau warum. Es scheint relativ einfach zu sein, das Timer-Timeout-Signal mit einer Update-Funktion zu verbinden, aber es scheint nie zu brennen.PyQt4: benutze einen QTimer, um die Fortschrittsbalken fortlaufend zu aktualisieren
Hier ist mein Code:
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()
Danke, was gerade brauchte ich ! Es ist fast immer etwas Einfaches. Entschuldigung, während ich über die Müllsammlung nachdenke ... (Mann, ich muss ein Buch über Python lesen) – Spencer