在这篇博客中,我们将介绍如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。这个应用程序将显示当前的 CPU 使用率,并绘制一个实时更新的折线图。
说明
本文介绍了如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。通过详细的代码实现和解析,我们可以轻松地创建一个类似的应用程序来监控系统性能。
环境准备
首先,确保你已经安装了所需的库。你可以使用以下命令安装 PyQt5、psutil 和 pyqtgraph:
pip install PyQt5 psutil pyqtgraph
依赖库简介
- PyQt5:一个用于创建图形用户界面的 Python 库。
- psutil:一个用于获取系统信息和监控系统性能的 Python 库。
- pyqtgraph:一个用于快速绘制图形和数据可视化的 Python 库。
代码解析
导入库
import sys
import psutil
import pyqtgraph as pg
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel
from PyQt5.QtCore import QTimer
解析:导入了 sys
、psutil
、pyqtgraph
和 PyQt5
库。这些库分别用于系统操作、获取系统信息、绘制图形和创建图形用户界面。
创建主窗口
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("CPU 使用率监控")
self.setGeometry(100, 100, 800, 600)
解析:定义了一个 MainWindow
类,继承自 QMainWindow
,并在其构造函数中设置窗口标题和大小。
布局和部件
# 创建主窗口部件
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
# 创建布局
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
# 创建标签显示 CPU 使用率
self.cpu_label = QLabel("CPU 使用率: 0%")
self.layout.addWidget(self.cpu_label)
# 创建图表窗口
self.plot_widget = pg.PlotWidget()
self.layout.addWidget(self.plot_widget)
解析:创建了一个主窗口部件 central_widget
,并设置了一个垂直布局 QVBoxLayout
。在布局中添加了一个标签 QLabel
用于显示 CPU 使用率,以及一个 PlotWidget
用于绘制折线图。
设置图表
# 设置图表
self.plot_widget.setBackground('w')
self.plot_widget.setTitle("CPU 使用率折线图")
self.plot_widget.setLabel('left', 'CPU 使用率 (%)')
self.plot_widget.setLabel('bottom', '时间 (s)')
self.plot_widget.showGrid(x=True, y=True)
解析:设置图表的背景颜色、标题、坐标轴标签和网格线。
初始化数据和定时器
# 初始化数据
self.data = []
self.max_points = 100
# 创建定时器
self.timer = QTimer()
self.timer.timeout.connect(self.update_data)
self.timer.start(1000) # 每秒更新一次
解析:初始化数据列表 self.data
和最大数据点数 self.max_points
。创建一个定时器 QTimer
,每秒调用一次 update_data
方法。
更新数据和图表
def update_data(self):
# 获取 CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
self.cpu_label.setText(f"CPU 使用率: {cpu_percent}%")
# 更新数据
self.data.append(cpu_percent)
if len(self.data) > self.max_points:
self.data.pop(0)
# 更新图表
self.plot_widget.clear()
self.plot_widget.plot(self.data, pen=pg.mkPen('b', width=2))
解析:在 update_data
方法中,获取当前的 CPU 使用率,并更新标签和折线图的数据。
代码实现
以下是完整的代码实现:
import sys
import psutil
import pyqtgraph as pg
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLabel
from PyQt5.QtCore import QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("CPU 使用率监控")
self.setGeometry(100, 100, 800, 600)
# 创建主窗口部件
self.central_widget = QWidget()
self.setCentralWidget(self.central_widget)
# 创建布局
self.layout = QVBoxLayout()
self.central_widget.setLayout(self.layout)
# 创建标签显示 CPU 使用率
self.cpu_label = QLabel("CPU 使用率: 0%")
self.layout.addWidget(self.cpu_label)
# 创建图表窗口
self.plot_widget = pg.PlotWidget()
self.layout.addWidget(self.plot_widget)
# 设置图表
self.plot_widget.setBackground('w')
self.plot_widget.setTitle("CPU 使用率折线图")
self.plot_widget.setLabel('left', 'CPU 使用率 (%)')
self.plot_widget.setLabel('bottom', '时间 (s)')
self.plot_widget.showGrid(x=True, y=True)
# 初始化数据
self.data = []
self.max_points = 100
# 创建定时器
self.timer = QTimer()
self.timer.timeout.connect(self.update_data)
self.timer.start(1000) # 每秒更新一次
def update_data(self):
# 获取 CPU 使用率
cpu_percent = psutil.cpu_percent(interval=1)
self.cpu_label.setText(f"CPU 使用率: {cpu_percent}%")
# 更新数据
self.data.append(cpu_percent)
if len(self.data) > self.max_points:
self.data.pop(0)
# 更新图表
self.plot_widget.clear()
self.plot_widget.plot(self.data, pen=pg.mkPen('b', width=2))
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
运行结果
运行上述代码后,你将看到一个窗口,显示当前的 CPU 使用率,并实时更新折线图。
相关类型推荐
- 使用 Matplotlib 绘制实时数据图表
- 如何使用 PyQt5 创建桌面应用
其他文章推荐
- 使用Python和Selenium爬取QQ新闻热榜-CSDN博客
- 在 Python 中编写一个简单的文件搜索工具-CSDN博客
- 使用Python的 pynput 模块创建键盘监听器-CSDN博客
- 使用Python 的psutil 库监控 新进程的创建-CSDN博客
- Python 创建一个简单的在线聊天系统-CSDN博客
- 使用 Python和moviepy库 将MP4视频 文件转换为GIF动画-CSDN博客
- 使用Selenium 和 Python 抓取快手网页大量评论-CSDN博客
扩展功能建议
- 添加内存使用率监控:可以扩展应用程序以监控内存使用率,并在同一窗口中显示内存使用率的折线图。
- 添加磁盘使用率监控:可以添加磁盘使用率监控功能,显示磁盘使用率的折线图。
- 保存数据:可以添加功能,将 CPU 使用率数据保存到文件中,以便后续分析。
- 自定义更新频率:可以添加一个输入框,让用户自定义数据更新的频率。
更多功能建议
- 网络使用率监控:添加网络使用率监控功能,显示上传和下载速度的折线图。
- 温度监控:监控 CPU 和 GPU 的温度,并在同一窗口中显示温度变化的折线图。
- 警报功能:当内存、磁盘或 CPU 使用率超过设定阈值时,触发警报通知用户。
- 历史数据分析:提供历史数据分析功能,用户可以查看过去一段时间内的使用情况,并生成报告。
- 多设备支持:扩展应用程序以支持多设备监控,用户可以在一个界面中查看多个设备的使用情况。
- 用户界面优化:优化用户界面,使其更加直观和易于使用,提供自定义主题和布局选项。
总结
本文介绍了如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。通过详细的代码实现和解析,我们可以轻松地创建一个类似的应用程序来监控系统性能。
结论
通过本文的介绍,我们学习了如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。这个应用程序不仅可以显示当前的 CPU 使用率,还可以绘制一个实时更新的折线图,帮助我们更好地了解系统的性能,如果你有任何问题或建议,欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀
希望这个结论对你有所帮助!如果你有任何其他问题或需要进一步的帮助,请随时告诉我。😊