Pyside6-QtCharts+psutil实战-绘制一个CPU监测工具

简介: Pyside6-QtCharts+psutil实战-绘制一个CPU监测工具

今天是实战篇章,我们结合可以快速提升我们开发效率的工具一起开实战一波实时读取系统CPU使用情况的折线图。

使用的开发工具Qt Designer来开发UI界面。

十分便捷。使用起来也算比较的简单了,虽然也存在不少的BUG。

?

对所需要的控件进行拖拽式,就OK。后续会出一个简单的视频录制。

?

第二步,就是先将实时读取代码拟定出来。正确运行了,我们在往UI上套。

?

使用Pyside6,简单的操作一波。windows上所需要用到的获取CPU数据的工具库是psutil,需要第三方下载。

?

第三步,确定自己需要使用的Pyside6相关的模块有哪些。

不一定一下子全部知道,最起码要有一个范围的认知,知道大致需要哪些。

?

PySide6.QtCore 中 Qt, QThread, Signal

? ?

PySide6.QtGui 中 QPainter

? ?

PySide6.QtWidgets 中 QApplication, QMainWindow, QVBoxLayout, QWidget

? ?

PySide6.QtCharts 中 QChartView, QLineSeries, QValueAxis

?

绘图的关键就是QtCharts

关于QtCharts的不太核心的核心代码如下:

# 创建一个图表视图
        self.chart_view = QChartView()
        self.chart_view.setRenderHint(QPainter.Antialiasing)
        # 创建一个折线图
        self.series = QLineSeries()
        self.series.setName("CPU使用率折线图")
        self.chart_view.chart().addSeries(self.series)
        # 创建一个轴
        self.axis_x = QValueAxis()
        self.axis_x.setRange(0, 50)
        self.axis_x.setLabelFormat("%d")
        self.axis_x.setTitleText("Time")
        self.axis_y = QValueAxis()
        self.axis_y.setRange(0, 100)
        self.axis_y.setLabelFormat("%d%%")
        self.axis_y.setTitleText("Usage")
        # 添加轴到图表
        self.chart_view.chart().addAxis(self.axis_x, Qt.AlignBottom)
        self.chart_view.chart().addAxis(self.axis_y, Qt.AlignLeft)
        self.series.attachAxis(self.axis_x)
        self.series.attachAxis(self.axis_y)

有了上述,基本上就可以渲染出一张图了,那么接下来就是数据来源了,从哪来,怎么来,怎么处理。

数据来源主要通过列表的形式传递。所以,我们定义一个列表来存储值。

# 初始化CPU使用率数据列表
self.cpu_usage_data = []

最后,那就是核心的玩意了,传递值并让它显示出来。

# 将数据添加到CPU使用率数据列表中
        self.cpu_usage_data.append(cpu_usage)
        # 只保留最近50个数据点
        self.cpu_usage_data = self.cpu_usage_data[-50:]
        # 清除折线图数据
        self.series.clear()
        # 添加最新的数据点到折线图
        for i, value in enumerate(self.cpu_usage_data):
            self.series.append(i, value)
        # 更新轴的范围
        self.axis_x.setRange(0, len(self.cpu_usage_data) - 1)
        self.axis_y.setRange(0, max(self.cpu_usage_data))
        # 更新图表视图
        self.chart_view.update()
?

将数据会知道折线图中,主要还是通过循环的方式将值添加到QLineSeries中。

?

最后绘制的效果是这样的:

我们需要做一点点修改。加上开始停止以及重置/清除的操作。如图:

使用Qt Desgner绘制起来一分钟不需要。写代码要写5-10min。

代码中我们使用了线程(非Python的threading模块,而是Pyside6的Qthread模块。)

主要用来一直用来获取数据,以及自定义型号的。自定义信号用来发送暂停开始结束以及over线程的信号。如下:

class CPUMonitorThread(QThread):
    cpu_data_updated = Signal(float)
    stop_requested = Signal()
    def __init__(self):
        super(CPUMonitorThread, self).__init__()
        self.paused = False
        self.should_stop = False  # 新增标志位
    def run(self):
        while not self.should_stop:  # 检查标志位
            if not self.paused:
                cpu_usage = psutil.cpu_percent()
                self.cpu_data_updated.emit(cpu_usage)
                self.msleep(1000)
        self.finished.emit()  # 发出线程完成的信号
    def pause(self):
        self.paused = True
    def resume(self):
        self.paused = False
    def stop(self):  # 新增停止方法
        self.should_stop = True
        self.quit()

三个按钮的信号机制

def clicked(self):
        self.ui.pushButton.clicked.connect(self.Chart)
        self.ui.pushButton_3.clicked.connect(self.clear_computer_info)
        self.ui.pushButton_2.clicked.connect(self.start_or_pause)

清除数据的部分的代码。主要还是要把列表中的数据给清理了。不然数据会一直存在。

def clear_computer_info(self):
        # 清空折线图数据和CPU使用率数据列表
        if self.series:
            self.series.clear()
            self.cpu_usage_data.clear()
            self.axis_y = None
            self.chart_view.update()

最后源代码地址在: https://gitee.com/qinganan_admin/Pyside6_Information/blob/master/%E6%A1%88%E4%BE%8B/%E7%9B%91%E6%B5%8B%E7%94%B5%E8%84%91CPU.py


目录
相关文章
|
15天前
|
监控 算法 Linux
【C/C++ 实用工具】CPU使用率监控工具对比
【C/C++ 实用工具】CPU使用率监控工具对比
54 0
|
15天前
|
人工智能 并行计算 PyTorch
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
74 0
|
8月前
|
安全 Windows
一次简单的服务器 cpu 占用率高的快速排查实战
一次简单的服务器 cpu 占用率高的快速排查实战
|
15天前
|
运维 Linux Docker
Docker详解(十一)——Docker容器CPU资源限额实战Docker详解
Docker详解(十一)——Docker容器CPU资源限额实战
35 5
|
15天前
|
Linux
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
Linux操作系统调优相关工具(一)查看CPU负载相关工具 找出系统中使用CPU最多的进程?
28 0
|
15天前
|
监控 Java
Java项目jar性能监控工具CPU内存等
Java项目jar性能监控工具CPU内存等
26 0
|
15天前
|
监控 Linux 测试技术
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
【 C/C++ 性能分析工具 CPU 采样分析器 perf 】掀开Linux perf性能分析的神秘面纱
90 0
|
7月前
|
监控 Ubuntu 数据可视化
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
496 0
如何使用各种工具和命令来检查 Ubuntu 中的 CPU 使用情况?
|
15天前
|
监控 Ubuntu
百度搜索:蓝易云【如何使用各种工具和命令来检查Ubuntu中的CPU使用情况?】
这些工具和命令可以帮助你实时监控和检查Ubuntu系统中的CPU使用情况。你可以根据需要选择合适的工具来查看CPU使用情况,并根据情况采取相应的措施来优化系统性能。
62 1
|
16天前
|
XML Java API
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
Android App开发之创建JNI接口获取CPU指令集讲解及实战(附源码 简单易懂)
55 0
http://www.vxiaotou.com