QQ个性网:专注于分享免费的QQ个性内容

关于我们| 网站公告| 广告服务| 联系我们| 网站地图

搜索
编程 JavaScript Java C++ Python SQL C Io ML COBOL Racket APL OCaml ABC Sed Bash Visual Basic Modula-2 Logo Delphi IDL Groovy Julia REXX Chapel X10 Forth Eiffel C# Go Rust PHP Swift Kotlin R Dart Perl Ruby TypeScript MATLAB Shell Lua Scala Objective-C F# Haskell Elixir Lisp Prolog Ada Fortran Erlang Scheme Smalltalk ABAP D ActionScript Tcl AWK IDL J PostScript IDL PL/SQL PowerShell

Python获取硬盘信息并展示(4)QChartView程序界面添加漂亮图表

日期:2025/04/06 02:04来源:未知 人气:52

导读:#Python有趣案例#前面内容,我们将电脑硬盘信息展示在了QTableWidget控件中PyQt5界面编程,使用QTableWidget创建界面,快速获取硬盘信息今天,完善另外一个控件QChartView的内容。我们来看下最终程序运行效果。程序最终效果QGraphicsView模块提升为QChartViewQChartView原来是QT公司的商用包,后来开源了。但是相对来说文......

Python有趣案例#前面内容,我们将电脑硬盘信息展示在了QTableWidget控件中

PyQt5界面编程,使用QTableWidget创建界面,快速获取硬盘信息

今天,完善另外一个控件QChartView的内容。我们来看下最终程序运行效果。

程序最终效果

QGraphicsView模块提升为QChartView

QChartView原来是QT公司的商用包,后来开源了。但是相对来说文档说明少。使用Qt设计师创建应用程序时,由于这个控件不是Qt设计师中基本控件,我们常用提升控件的方法将它引入界面中。

QGraphicsView提升方法

弹出对话框后输入下面内容。

然后点击【添加】->【提升】即可导入。

这里我们直接将头文件改为导入模块的语句。

将.ui文件转化为.py文件后,我们打开这个界面文件

把它复制到第一行就可以了。

在QChartView中绘制图表

下面我们看下QChartView绘制图表的一般过程

第一步:创建QChart对象实例

self.chart_disk = QtChart.QChart()这里我们对图例外观进行一些个性化设置

比如:

设置图例字体

f_legend = QFont()f_legend.setFamily("楷体")f_legend.setPointSize(14)self.chart_disk.legend().setFont(f_legend)设置标题

self.chart_disk.setTitle("磁盘使用情况")f_title = QFont()f_title.setFamily("微软雅黑")f_title.setPointSize(22)self.chart_disk.setTitleFont(f_title)设置图表动画效果

self.chart_disk.setAnimationOptions(QtChart.QChart.AnimationOption.SeriesAnimations)其它还有很多,自己看下文档,对照这个思路,应该没有问题。

第二步:创建图表序列

这一步很重要,因为我们需要展示的数据在这一步添加

对于硬盘容量来讲,最重要的两个参数就是已用控件和剩余空间,我们添加这两个序列对象。

self.set0 = QtChart.QBarSet('已用')self.set1 = QtChart.QBarSet('未用')这两个序列对象提供了很多方法用来设置外观,比如:颜色等

self.set0.setColor(QColor('green'))self.set1.setColor(QColor('blue'))这里创建了2个条形图序列,然后将它们添加到一个百分比条形序列中

self.series_disk = QtChart.QPercentBarSeries()self.series_disk.append(self.set0)self.series_disk.append(self.set1)第三步:将序列添加到图表中

这时,我们的序列里面还没有数据

self.chart_disk.addSeries(self.series_disk)到这里,基本框架就搭建完成了。我们需要对图表的坐标轴进行设置(先不讨论添加数据)

第四步:在图表中添加坐标轴

将X轴作为类别轴,Y轴作为值轴

self.axisX_disk = QtChart.QBarCategoryAxis()self.axisY_disk = QtChart.QValueAxis()第五步:把坐标轴添加到QChart对象实例中

这一步,将坐标轴添加到图表中

self.chart_disk.addAxis(self.axisX_disk, Qt.AlignmentFlag.AlignBottom)self.chart_disk.addAxis(self.axisY_disk, Qt.AlignmentFlag.AlignLeft)第六步:把序列关联到坐标轴

这里我们将序列关联到坐标轴上面

self.series_disk.attachAxis(self.axisX_disk)self.series_disk.attachAxis(self.axisY_disk)第七步:将图表实例放置在我们的控件里

self.__ui.chart_disk_info.setChart(self.chart_disk)代码中self.__ui.chart_disk_info是我们利用Qt设计师添加到界面上的那个QChartView控件。

到了,这一步,乍一看没什么问题。细心的小伙伴可能发现了,我们的序列里面根本没有数据。如何把序列里面的数据关联到坐标轴,我们创建一个类别模型。

self.categories = QStringListModel()然后,获取硬盘信息

mydisk = psutil.disk_partitions()遍历分区

存储分区列表partlst = []for dk in mydisk:# 分区名称添加到列表中 partlst.append(dk.device[0] + '盘') # 每一个分区的使用空间和剩余控件添加到序列中 usage = psutil.disk_usage(dk.device) # 序列中的值 self.set0.append(usage.used) self.set1.append(usage.free)然后,我们将类别模型关联到数据中

self.categories.setStringList(partlst)self.axisX_disk.append(partlst)这样,我们就完成了数据添加。

制作轮子

有了前面的基础,我们完成之前的案例就很简单了。这里不再赘述,小伙伴们根据案例源代码,对照看一下这个过程。

当然,还有很多需要改进的地方,比如,当我们的磁盘容量大于80%时,让程序提醒我们,这个功能怎么实现呢?留给小伙伴们一个作业,后续我们介绍。

最后,奉上这个小程序的源代码,关注并私信“diskinfoqt”。

关于我们|网站公告|广告服务|联系我们| 网站地图

Copyright © 2002-2023 某某QQ个性网 版权所有 | 备案号:粤ICP备xxxxxxxx号

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告