使用 PyQt5 和 pyqtgraph 创建实时 CPU 使用率监控应用

在这篇博客中,我们将介绍如何使用 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

解析:导入了 syspsutilpyqtgraph 和 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 创建桌面应用

其他文章推荐

扩展功能建议

  1. 添加内存使用率监控:可以扩展应用程序以监控内存使用率,并在同一窗口中显示内存使用率的折线图。
  2. 添加磁盘使用率监控:可以添加磁盘使用率监控功能,显示磁盘使用率的折线图。
  3. 保存数据:可以添加功能,将 CPU 使用率数据保存到文件中,以便后续分析。
  4. 自定义更新频率:可以添加一个输入框,让用户自定义数据更新的频率。

更多功能建议

  1. 网络使用率监控:添加网络使用率监控功能,显示上传和下载速度的折线图。
  2. 温度监控:监控 CPU 和 GPU 的温度,并在同一窗口中显示温度变化的折线图。
  3. 警报功能:当内存、磁盘或 CPU 使用率超过设定阈值时,触发警报通知用户。
  4. 历史数据分析:提供历史数据分析功能,用户可以查看过去一段时间内的使用情况,并生成报告。
  5. 多设备支持:扩展应用程序以支持多设备监控,用户可以在一个界面中查看多个设备的使用情况。
  6. 用户界面优化:优化用户界面,使其更加直观和易于使用,提供自定义主题和布局选项。

总结

本文介绍了如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。通过详细的代码实现和解析,我们可以轻松地创建一个类似的应用程序来监控系统性能。

结论

通过本文的介绍,我们学习了如何使用 PyQt5 和 pyqtgraph 库创建一个实时监控 CPU 使用率的图形化应用。这个应用程序不仅可以显示当前的 CPU 使用率,还可以绘制一个实时更新的折线图,帮助我们更好地了解系统的性能,如果你有任何问题或建议,欢迎在评论区留言。继续探索和学习,祝你在深度学习的旅程中取得更多的成果!🚀


希望这个结论对你有所帮助!如果你有任何其他问题或需要进一步的帮助,请随时告诉我。😊

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LIY若依

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值