arnold Asked:2022-04-27 03:09:31 +0000 UTC2022-04-27 03:09:31 +0000 UTC 2022-04-27 03:09:31 +0000 UTC 获取系统使用信息并将其显示在图表中[关闭] 772 如何构建每秒更新的已用磁盘空间的散点图?我很乐意提供帮助! 我们需要这样的时间表,因为对于应用程序的运行,磁盘空间不会发生显着变化(除非我们删除一些东西)。 python 2 个回答 Voted Best Answer S. Nick 2022-04-27T05:31:15Z2022-04-27T05:31:15Z 好的,我会向你展示一个可能的解决方案来解决你的想法,但是会有家庭作业给你。 您需要学习psutil(python 系统和进程实用程序)是一个跨平台库,用于获取有关Python中正在运行的进程和系统使用情况(CPU、内存、磁盘、网络、传感器)的信息。 然后替换:psutil.virtual_memory() 以命名元组的形式返回系统内存使用统计信息,包括以下字段,以字节表示。主要特征 ... onpsutil.disk_usage(path) 以命名元组的形式返回有关包含指定路径的分区的磁盘使用统计信息,包括以字节表示的总空间、已用空间和可用空间,以及已用百分比。 在这里阅读磁盘 主文件 import sys import os import psutil # pip install psutil import platform from pathlib import Path from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.Qt import * from pyqtgraph import PlotWidget import pyqtgraph as pg from q1354387_main_ui import Ui_MainWindow import numpy as np from collections import deque class MainWindow(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.traces = dict() self.timestamp = 0 self.timeaxis = [] self.cpuaxis = [] self.ramaxis = [] self.current_timer_graph = None self.graph_lim = 15 self.deque_timestamp = deque([], maxlen=self.graph_lim+20) self.deque_cpu = deque([], maxlen=self.graph_lim+20) self.deque_ram = deque([], maxlen=self.graph_lim+20) self.ui.label.setText( f"{platform.system()} {platform.machine()}") self.ui.label_2.setText( f"Processor: {platform.processor()}") self.graphwidget1 = PlotWidget(title="CPU percent") x1_axis = self.graphwidget1.getAxis('bottom') x1_axis.setLabel(text='Time since start (s)') y1_axis = self.graphwidget1.getAxis('left') y1_axis.setLabel(text='Percent') self.graphwidget2 = PlotWidget(title="RAM percent") x2_axis = self.graphwidget2.getAxis('bottom') x2_axis.setLabel(text='Time since start (s)') y2_axis = self.graphwidget2.getAxis('left') y2_axis.setLabel(text='Percent') self.ui.pushButton.clicked.connect(self.show_cpu_graph) self.ui.pushButton_2.clicked.connect(self.show_ram_graph) self.ui.gridLayout.addWidget(self.graphwidget1, 0, 0, 1, 3) self.ui.gridLayout.addWidget(self.graphwidget2, 0, 0, 1, 3) self.current_timer_systemStat = QtCore.QTimer() self.current_timer_systemStat.timeout.connect( self.getsystemStatpercent) self.current_timer_systemStat.start(1000) self.getsystemStatpercent() self.show_cpu_graph() def getsystemStatpercent(self): self.cpu_percent = psutil.cpu_percent() self.ram_percent = psutil.virtual_memory().percent self.setValue(self.cpu_percent, self.ui.labelPercentageCPU, self.ui.circularProgressCPU, "rgba(85, 170, 255, 255)") self.setValue(self.ram_percent, self.ui.labelPercentageRAM, self.ui.circularProgressRAM, "rgba(255, 0, 127, 255)") def start_cpu_graph(self): if self.current_timer_graph: self.current_timer_graph.stop() self.current_timer_graph.deleteLater() self.current_timer_graph = None self.current_timer_graph = QtCore.QTimer() self.current_timer_graph.timeout.connect(self.update_cpu) self.current_timer_graph.start(1000) def update_cpu(self): self.timestamp += 1 self.deque_timestamp.append(self.timestamp) self.deque_cpu.append(self.cpu_percent) self.deque_ram.append(self.ram_percent) timeaxis_list = list(self.deque_timestamp) cpu_list = list(self.deque_cpu) if self.timestamp > self.graph_lim: self.graphwidget1.setRange( xRange=[self.timestamp-self.graph_lim+1, self.timestamp], yRange=[min(cpu_list[-self.graph_lim:]), max(cpu_list[-self.graph_lim:])] ) self.set_plotdata(name="cpu", data_x=timeaxis_list, data_y=cpu_list) def start_ram_graph(self): if self.current_timer_graph: self.current_timer_graph.stop() self.current_timer_graph.deleteLater() self.current_timer_graph = None self.current_timer_graph = QtCore.QTimer() self.current_timer_graph.timeout.connect(self.update_ram) self.current_timer_graph.start(1000) def update_ram(self): self.timestamp += 1 self.deque_timestamp.append(self.timestamp) self.deque_cpu.append(self.cpu_percent) self.deque_ram.append(self.ram_percent) timeaxis_list = list(self.deque_timestamp) ram_list = list(self.deque_ram) if self.timestamp > self.graph_lim: self.graphwidget2.setRange( xRange=[self.timestamp-self.graph_lim+1, self.timestamp], yRange=[min(ram_list[-self.graph_lim:]), max(ram_list[-self.graph_lim:])] ) self.set_plotdata(name="ram", data_x=timeaxis_list, data_y=ram_list) def show_cpu_graph(self): self.graphwidget2.hide() self.graphwidget1.show() self.start_cpu_graph() self.ui.pushButton.setEnabled(False) self.ui.pushButton.setStyleSheet("QPushButton {background-color : lightblue;}") self.ui.pushButton_2.setEnabled(True) self.ui.pushButton_2.setStyleSheet(""" QPushButton { background-color: rgb(255, 44, 174); color : white; } """) def show_ram_graph(self): self.graphwidget1.hide() self.graphwidget2.show() self.start_ram_graph() self.ui.pushButton_2.setEnabled(False) self.ui.pushButton.setEnabled(True) self.ui.pushButton_2.setStyleSheet( "QPushButton" "{" "background-color : lightblue;" "}" ) self.ui.pushButton.setStyleSheet( "QPushButton" "{" "background-color : rgba(85, 170, 255, 255);" "}" "QPushButton" "{" "color : white;" "}" ) def set_plotdata(self, name, data_x, data_y): if name in self.traces: self.traces[name].setData(data_x, data_y) else: if name == "cpu": self.traces[name] = self.graphwidget1.getPlotItem().plot( pen=pg.mkPen((85, 170, 255), width=3)) elif name == "ram": self.traces[name] = self.graphwidget2.getPlotItem().plot( pen=pg.mkPen((255, 0, 127), width=3)) def setValue(self, value, labelPercentage, progressBarName, color): sliderValue = value htmlText = """ <p align="center"> <span style=" font-size:50pt;">{VALUE}</span> <span style=" font-size:40pt; vertical-align:super;">%</span> </p> """ labelPercentage.setText(htmlText.replace( "{VALUE}", f"{sliderValue:.1f}")) self.progressBarValue(sliderValue, progressBarName, color) def progressBarValue(self, value, widget, color): styleSheet = """ QFrame{ border-radius: 110px; background-color: qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:{STOP_1} rgba(255, 0, 127, 0), stop:{STOP_2} {COLOR}); } """ progress = (100 - value) / 100.0 stop_1 = str(progress - 0.001) stop_2 = str(progress) if value == 100: stop_1 = "1.000" stop_2 = "1.000" newStylesheet = styleSheet.replace("{STOP_1}", stop_1).replace( "{STOP_2}", stop_2).replace("{COLOR}", color) widget.setStyleSheet(newStylesheet) if __name__ == "__main__": app = QApplication(sys.argv) w = MainWindow() w.show() sys.exit(app.exec_()) q1354387_main_ui.py from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(760, 480) MainWindow.setMinimumSize(QtCore.QSize(760, 480)) MainWindow.setMaximumSize(QtCore.QSize(760, 480)) MainWindow.setStyleSheet("background-color: rgb(77, 77, 127);") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.circularProgressBar_Main = QtWidgets.QFrame(self.centralwidget) self.circularProgressBar_Main.setGeometry(QtCore.QRect(20, 60, 240, 240)) self.circularProgressBar_Main.setStyleSheet("background-color: none;") self.circularProgressBar_Main.setFrameShape(QtWidgets.QFrame.NoFrame) self.circularProgressBar_Main.setFrameShadow(QtWidgets.QFrame.Raised) self.circularProgressBar_Main.setObjectName("circularProgressBar_Main") self.circularProgressCPU = QtWidgets.QFrame(self.circularProgressBar_Main) self.circularProgressCPU.setGeometry(QtCore.QRect(10, 10, 220, 220)) self.circularProgressCPU.setStyleSheet("QFrame{\n" " border-radius: 110px; \n" " background-color: qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:0.400 rgba(85, 170, 255, 255), stop:0.395 rgba(255, 255, 255, 0));\n" "}") self.circularProgressCPU.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularProgressCPU.setFrameShadow(QtWidgets.QFrame.Raised) self.circularProgressCPU.setObjectName("circularProgressCPU") self.circularBg = QtWidgets.QFrame(self.circularProgressBar_Main) self.circularBg.setGeometry(QtCore.QRect(10, 10, 220, 220)) self.circularBg.setStyleSheet("QFrame{\n" " border-radius: 110px; \n" " background-color: rgba(85, 85, 127, 100);\n" "}") self.circularBg.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularBg.setFrameShadow(QtWidgets.QFrame.Raised) self.circularBg.setObjectName("circularBg") self.circularContainer = QtWidgets.QFrame(self.circularProgressBar_Main) self.circularContainer.setGeometry(QtCore.QRect(25, 25, 190, 190)) self.circularContainer.setBaseSize(QtCore.QSize(0, 0)) self.circularContainer.setStyleSheet("QFrame{\n" " border-radius: 95px; \n" " background-color: rgb(58, 58, 102);\n" "}") self.circularContainer.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularContainer.setFrameShadow(QtWidgets.QFrame.Raised) self.circularContainer.setObjectName("circularContainer") self.layoutWidget = QtWidgets.QWidget(self.circularContainer) self.layoutWidget.setGeometry(QtCore.QRect(10, 40, 171, 125)) self.layoutWidget.setObjectName("layoutWidget") self.infoLayout = QtWidgets.QGridLayout(self.layoutWidget) self.infoLayout.setContentsMargins(0, 0, 0, 0) self.infoLayout.setObjectName("infoLayout") self.labelAplicationName = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(10) self.labelAplicationName.setFont(font) self.labelAplicationName.setStyleSheet("color: #FFFFFF; background-color: none;") self.labelAplicationName.setAlignment(QtCore.Qt.AlignCenter) self.labelAplicationName.setObjectName("labelAplicationName") self.infoLayout.addWidget(self.labelAplicationName, 0, 0, 1, 1) self.labelPercentageCPU = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(30) self.labelPercentageCPU.setFont(font) self.labelPercentageCPU.setStyleSheet("color: rgb(115, 185, 255); padding: 0px; background-color: none;") self.labelPercentageCPU.setAlignment(QtCore.Qt.AlignCenter) self.labelPercentageCPU.setIndent(-1) self.labelPercentageCPU.setObjectName("labelPercentageCPU") self.infoLayout.addWidget(self.labelPercentageCPU, 1, 0, 1, 1) self.labelCredits = QtWidgets.QLabel(self.layoutWidget) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(8) self.labelCredits.setFont(font) self.labelCredits.setStyleSheet("color: rgb(148, 148, 216); background-color: none;") self.labelCredits.setAlignment(QtCore.Qt.AlignCenter) self.labelCredits.setObjectName("labelCredits") self.infoLayout.addWidget(self.labelCredits, 2, 0, 1, 1) self.circularBg.raise_() self.circularProgressCPU.raise_() self.circularContainer.raise_() self.circularProgressBar_Main_3 = QtWidgets.QFrame(self.centralwidget) self.circularProgressBar_Main_3.setGeometry(QtCore.QRect(500, 60, 240, 240)) self.circularProgressBar_Main_3.setStyleSheet("background-color: none;") self.circularProgressBar_Main_3.setFrameShape(QtWidgets.QFrame.NoFrame) self.circularProgressBar_Main_3.setFrameShadow(QtWidgets.QFrame.Raised) self.circularProgressBar_Main_3.setObjectName("circularProgressBar_Main_3") self.circularProgressRAM = QtWidgets.QFrame(self.circularProgressBar_Main_3) self.circularProgressRAM.setGeometry(QtCore.QRect(10, 10, 220, 220)) self.circularProgressRAM.setStyleSheet("QFrame{\n" " border-radius: 110px; \n" " background-color: qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:0.750 rgba(255, 0, 127, 255), stop:0.745 rgba(255, 255, 255, 0));\n" "}") self.circularProgressRAM.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularProgressRAM.setFrameShadow(QtWidgets.QFrame.Raised) self.circularProgressRAM.setObjectName("circularProgressRAM") self.circularBg_3 = QtWidgets.QFrame(self.circularProgressBar_Main_3) self.circularBg_3.setGeometry(QtCore.QRect(10, 10, 220, 220)) self.circularBg_3.setStyleSheet("QFrame{\n" " border-radius: 110px; \n" " background-color: rgba(85, 85, 127, 100);\n" "}") self.circularBg_3.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularBg_3.setFrameShadow(QtWidgets.QFrame.Raised) self.circularBg_3.setObjectName("circularBg_3") self.circularContainer_3 = QtWidgets.QFrame(self.circularProgressBar_Main_3) self.circularContainer_3.setGeometry(QtCore.QRect(25, 25, 190, 190)) self.circularContainer_3.setBaseSize(QtCore.QSize(0, 0)) self.circularContainer_3.setStyleSheet("QFrame{\n" " border-radius: 95px; \n" " background-color: rgb(58, 58, 102);\n" "}") self.circularContainer_3.setFrameShape(QtWidgets.QFrame.StyledPanel) self.circularContainer_3.setFrameShadow(QtWidgets.QFrame.Raised) self.circularContainer_3.setObjectName("circularContainer_3") self.layoutWidget_3 = QtWidgets.QWidget(self.circularContainer_3) self.layoutWidget_3.setGeometry(QtCore.QRect(10, 40, 171, 125)) self.layoutWidget_3.setObjectName("layoutWidget_3") self.infoLayout_3 = QtWidgets.QGridLayout(self.layoutWidget_3) self.infoLayout_3.setContentsMargins(0, 0, 0, 0) self.infoLayout_3.setObjectName("infoLayout_3") self.labelAplicationName_3 = QtWidgets.QLabel(self.layoutWidget_3) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(10) self.labelAplicationName_3.setFont(font) self.labelAplicationName_3.setStyleSheet("color: #FFFFFF; background-color: none;") self.labelAplicationName_3.setAlignment(QtCore.Qt.AlignCenter) self.labelAplicationName_3.setObjectName("labelAplicationName_3") self.infoLayout_3.addWidget(self.labelAplicationName_3, 0, 0, 1, 1) self.labelPercentageRAM = QtWidgets.QLabel(self.layoutWidget_3) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(30) self.labelPercentageRAM.setFont(font) self.labelPercentageRAM.setStyleSheet("color: rgb(255, 44, 174); padding: 0px; background-color: none;") self.labelPercentageRAM.setAlignment(QtCore.Qt.AlignCenter) self.labelPercentageRAM.setIndent(-1) self.labelPercentageRAM.setObjectName("labelPercentageRAM") self.infoLayout_3.addWidget(self.labelPercentageRAM, 1, 0, 1, 1) self.labelCredits_3 = QtWidgets.QLabel(self.layoutWidget_3) font = QtGui.QFont() font.setFamily("Helvetica Neue") font.setPointSize(8) self.labelCredits_3.setFont(font) self.labelCredits_3.setStyleSheet("color: rgb(148, 148, 216); background-color: none;") self.labelCredits_3.setAlignment(QtCore.Qt.AlignCenter) self.labelCredits_3.setObjectName("labelCredits_3") self.infoLayout_3.addWidget(self.labelCredits_3, 2, 0, 1, 1) self.circularBg_3.raise_() self.circularProgressRAM.raise_() self.circularContainer_3.raise_() self.label_title = QtWidgets.QLabel(self.centralwidget) self.label_title.setGeometry(QtCore.QRect(60, 10, 641, 50)) self.label_title.setStyleSheet("color: rgb(115, 185, 255); background-color: none; font-size: 22px;") self.label_title.setAlignment(QtCore.Qt.AlignCenter) self.label_title.setObjectName("label_title") self.gridLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.gridLayoutWidget.setGeometry(QtCore.QRect(20, 320, 721, 151)) self.gridLayoutWidget.setObjectName("gridLayoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setObjectName("gridLayout") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(330, 160, 113, 32)) self.pushButton.setStyleSheet("background-color: rgba(85, 170, 255, 255);\n" "color: white;") self.pushButton.setObjectName("pushButton") self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget) self.pushButton_2.setGeometry(QtCore.QRect(330, 200, 113, 32)) self.pushButton_2.setStyleSheet("background-color: rgb(255, 44, 174);\n" "color: white;") self.pushButton_2.setObjectName("pushButton_2") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(210, 60, 341, 16)) self.label.setStyleSheet("color: rgb(115, 185, 255); font-size: 12px; padding-left: 2px; padding-right: 2px; border: none;") self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(260, 90, 241, 16)) self.label_2.setStyleSheet("color: rgb(115, 185, 255); font-size: 12px; padding-left: 2px; padding-right: 2px; border: none;") self.label_2.setAlignment(QtCore.Qt.AlignCenter) self.label_2.setObjectName("label_2") MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "System Monitor")) self.labelAplicationName.setText(_translate("MainWindow", "<strong>CPU</strong> USAGE")) self.labelPercentageCPU.setText(_translate("MainWindow", "<p align=\"center\"><span style=\" font-size:50pt;\">60</span><span style=\" font-size:40pt; vertical-align:super;\">%</span></p>")) self.labelCredits.setText(_translate("MainWindow", "<html><head/><body><p><br/></p></body></html>")) self.labelAplicationName_3.setText(_translate("MainWindow", "<strong>RAM</strong> USAGE")) self.labelPercentageRAM.setText(_translate("MainWindow", "<p align=\"center\"><span style=\" font-size:50pt;\">25</span><span style=\" font-size:40pt; vertical-align:super;\">%</span></p>")) self.labelCredits_3.setText(_translate("MainWindow", "<html><head/><body><p><br/></p></body></html>")) self.label_title.setText(_translate("MainWindow", "System Monitor")) self.pushButton.setText(_translate("MainWindow", "Show CPU Graph")) self.pushButton_2.setText(_translate("MainWindow", "Show RAM Graph")) self.label.setText(_translate("MainWindow", "Darwin")) self.label_2.setText(_translate("MainWindow", "Processor")) S. Nick 2022-04-27T17:45:25Z2022-04-27T17:45:25Z 我想问一个小问题:您是否使用Qt Designer制作了q1354387_main_ui.py文件? 是否有可能以某种方式将.py转换为.ui以查看所有内容是如何安排在那里并弄清楚的? 从.ui转换为.py: pyuic5 q1354387_main.ui -o q1354387_main_ui.py -x q1354387_main.ui <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>760</width> <height>480</height> </rect> </property> <property name="minimumSize"> <size> <width>760</width> <height>480</height> </size> </property> <property name="maximumSize"> <size> <width>760</width> <height>480</height> </size> </property> <property name="windowTitle"> <string>System Monitor</string> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(77, 77, 127);</string> </property> <widget class="QWidget" name="centralwidget"> <widget class="QFrame" name="circularProgressBar_Main"> <property name="geometry"> <rect> <x>20</x> <y>60</y> <width>240</width> <height>240</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: none;</string> </property> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <widget class="QFrame" name="circularProgressCPU"> <property name="geometry"> <rect> <x>10</x> <y>10</y> <width>220</width> <height>220</height> </rect> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 110px; background-color: qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:0.400 rgba(85, 170, 255, 255), stop:0.395 rgba(255, 255, 255, 0)); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> <widget class="QFrame" name="circularBg"> <property name="geometry"> <rect> <x>10</x> <y>10</y> <width>220</width> <height>220</height> </rect> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 110px; background-color: rgba(85, 85, 127, 100); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> <widget class="QFrame" name="circularContainer"> <property name="geometry"> <rect> <x>25</x> <y>25</y> <width>190</width> <height>190</height> </rect> </property> <property name="baseSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 95px; background-color: rgb(58, 58, 102); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <widget class="QWidget" name="layoutWidget"> <property name="geometry"> <rect> <x>10</x> <y>40</y> <width>171</width> <height>125</height> </rect> </property> <layout class="QGridLayout" name="infoLayout"> <item row="0" column="0"> <widget class="QLabel" name="labelAplicationName"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>10</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: #FFFFFF; background-color: none;</string> </property> <property name="text"> <string><strong>CPU</strong> USAGE</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="labelPercentageCPU"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>30</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: rgb(115, 185, 255); padding: 0px; background-color: none;</string> </property> <property name="text"> <string><p align="center"><span style=" font-size:50pt;">60</span><span style=" font-size:40pt; vertical-align:super;">%</span></p></string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> <property name="indent"> <number>-1</number> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="labelCredits"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>8</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: rgb(148, 148, 216); background-color: none;</string> </property> <property name="text"> <string><html><head/><body><p><br/></p></body></html></string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> </layout> </widget> </widget> <zorder>circularBg</zorder> <zorder>circularProgressCPU</zorder> <zorder>circularContainer</zorder> </widget> <widget class="QFrame" name="circularProgressBar_Main_3"> <property name="geometry"> <rect> <x>500</x> <y>60</y> <width>240</width> <height>240</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: none;</string> </property> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <widget class="QFrame" name="circularProgressRAM"> <property name="geometry"> <rect> <x>10</x> <y>10</y> <width>220</width> <height>220</height> </rect> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 110px; background-color: qconicalgradient(cx:0.5, cy:0.5, angle:90, stop:0.750 rgba(255, 0, 127, 255), stop:0.745 rgba(255, 255, 255, 0)); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> <widget class="QFrame" name="circularBg_3"> <property name="geometry"> <rect> <x>10</x> <y>10</y> <width>220</width> <height>220</height> </rect> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 110px; background-color: rgba(85, 85, 127, 100); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> </widget> <widget class="QFrame" name="circularContainer_3"> <property name="geometry"> <rect> <x>25</x> <y>25</y> <width>190</width> <height>190</height> </rect> </property> <property name="baseSize"> <size> <width>0</width> <height>0</height> </size> </property> <property name="styleSheet"> <string notr="true">QFrame{ border-radius: 95px; background-color: rgb(58, 58, 102); }</string> </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> <property name="frameShadow"> <enum>QFrame::Raised</enum> </property> <widget class="QWidget" name="layoutWidget_3"> <property name="geometry"> <rect> <x>10</x> <y>40</y> <width>171</width> <height>125</height> </rect> </property> <layout class="QGridLayout" name="infoLayout_3"> <item row="0" column="0"> <widget class="QLabel" name="labelAplicationName_3"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>10</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: #FFFFFF; background-color: none;</string> </property> <property name="text"> <string><strong>RAM</strong> USAGE</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="labelPercentageRAM"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>30</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: rgb(255, 44, 174); padding: 0px; background-color: none;</string> </property> <property name="text"> <string><p align="center"><span style=" font-size:50pt;">25</span><span style=" font-size:40pt; vertical-align:super;">%</span></p></string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> <property name="indent"> <number>-1</number> </property> </widget> </item> <item row="2" column="0"> <widget class="QLabel" name="labelCredits_3"> <property name="font"> <font> <family>Helvetica Neue</family> <pointsize>8</pointsize> </font> </property> <property name="styleSheet"> <string notr="true">color: rgb(148, 148, 216); background-color: none;</string> </property> <property name="text"> <string><html><head/><body><p><br/></p></body></html></string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </item> </layout> </widget> </widget> <zorder>circularBg_3</zorder> <zorder>circularProgressRAM</zorder> <zorder>circularContainer_3</zorder> </widget> <widget class="QLabel" name="label_title"> <property name="geometry"> <rect> <x>60</x> <y>10</y> <width>641</width> <height>50</height> </rect> </property> <property name="styleSheet"> <string notr="true">color: rgb(115, 185, 255); background-color: none; font-size: 22px;</string> </property> <property name="text"> <string>System Monitor</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> <widget class="QWidget" name="gridLayoutWidget"> <property name="geometry"> <rect> <x>20</x> <y>320</y> <width>721</width> <height>151</height> </rect> </property> <layout class="QGridLayout" name="gridLayout"/> </widget> <widget class="QPushButton" name="pushButton"> <property name="geometry"> <rect> <x>330</x> <y>160</y> <width>113</width> <height>32</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: rgba(85, 170, 255, 255); color: white;</string> </property> <property name="text"> <string>Show CPU Graph</string> </property> </widget> <widget class="QPushButton" name="pushButton_2"> <property name="geometry"> <rect> <x>330</x> <y>200</y> <width>113</width> <height>32</height> </rect> </property> <property name="styleSheet"> <string notr="true">background-color: rgb(255, 44, 174); color: white;</string> </property> <property name="text"> <string>Show RAM Graph</string> </property> </widget> <widget class="QLabel" name="label"> <property name="geometry"> <rect> <x>210</x> <y>60</y> <width>341</width> <height>16</height> </rect> </property> <property name="styleSheet"> <string notr="true">color: rgb(115, 185, 255); font-size: 12px; padding-left: 2px; padding-right: 2px; border: none;</string> </property> <property name="text"> <string>Darwin</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> <widget class="QLabel" name="label_2"> <property name="geometry"> <rect> <x>260</x> <y>90</y> <width>241</width> <height>16</height> </rect> </property> <property name="styleSheet"> <string notr="true">color: rgb(115, 185, 255); font-size: 12px; padding-left: 2px; padding-right: 2px; border: none;</string> </property> <property name="text"> <string>Processor</string> </property> <property name="alignment"> <set>Qt::AlignCenter</set> </property> </widget> </widget> </widget> <resources/> <connections/> </ui>
好的,我会向你展示一个可能的解决方案来解决你的想法,但是会有家庭作业给你。
您需要学习psutil(python 系统和进程实用程序)是一个跨平台库,用于获取有关Python中正在运行的进程和系统使用情况(CPU、内存、磁盘、网络、传感器)的信息。
然后替换:
psutil.virtual_memory()以命名元组的形式返回系统内存使用统计信息,包括以下字段,以字节表示。主要特征 ...on
psutil.disk_usage(path)以命名元组的形式返回有关包含指定路径的分区的磁盘使用统计信息,包括以字节表示的总空间、已用空间和可用空间,以及已用百分比。在这里阅读磁盘
主文件
q1354387_main_ui.py
从.ui转换为.py:
q1354387_main.ui