pyqt5界面绘图(PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形)
pyqt5界面绘图
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形在之前介绍pyqtgraph的文章中,我们都是一次性的获取数据并将其绘制为图形。然而在很多场景中,我们都需要对实时的数据进行图形化展示,比如:股票的实时行情、仪器设备的实时状态等,这时候就需要对数据进行实时的更新和绘制。
今天我们就来介绍一下在pyqtgraph中根据实时数据更新绘制图形。
今天的例子我们通过编写一个电脑cpu实时使用率助手来讲解。
一、通过python获取实时的cpu信息
在windows操作系统的电脑上,我们通过“任务管理器”可以很方便地查看到自己电脑cpu实时的使用情况,并且cpu的占用率还会通过一个实时的图形区域显示出来,如下图所示:
通过实时变化的cpu利用率图形,我们可以清晰地看到cpu使用情况的变化。在python中,我们也能很方便的获取到计算机cpu的实时使用率。
|
# coding:utf-8 # @文件: 1.py # @创建者:州的先生 # #日期:2019/5/12 # 博客地址:https://zmister.com import psutil cpu = "cpu:%0.2f" % psutil.cpu_percent(interval = 1 ) + "%" print (cpu) |
通过运行上述代码,我们就能获取到此时电脑cpu的使用率。通过将其改进一下,加入循环和时间间隔,我们就可以持续获得当前电脑cpu的使用率,如下代码所示:
|
# coding:utf-8 # @文件: 1.py # @创建者:州的先生 # #日期:2019/5/12 # 博客地址:zmister.com import psutil import time def get_cpu_info(): cpu = "cpu:%0.2f" % psutil.cpu_percent(interval = 1 ) + "%" return cpu def main(): while true: info = get_cpu_info() print (info) time.sleep( 1 ) if __name__ = = "__main__" : main() |
运行上述代码,我们将每隔1秒获取到实时的cpu使用率数据,这将是我们图形界面程序的数据来源。
二、使用pyqt5创建一个图形界面
有了数据来源之后,我们来创建一个图形界面,这个图形界面由一个widget包裹着一个plotwidget,图形界面的核心就是一个ptqtgraph的图形部件。其代码如下所示:
|
# coding:utf-8 # @文件: 1.py # @创建者:州的先生 # #日期:2019/5/12 # 博客地址:zmister.com from pyqt5 import qtwidgets,qtcore,qtgui import tushare as ts import pyqtgraph as pg import sys import datetime import traceback import numpy as np class mainui(qtwidgets.qmainwindow): def __init__( self ): super ().__init__() self .setwindowtitle( "cpu使用率监控 - 州的先生https://zmister.com" ) self .main_widget = qtwidgets.qwidget() # 创建一个主部件 self .main_layout = qtwidgets.qgridlayout() # 创建一个网格布局 self .main_widget.setlayout( self .main_layout) # 设置主部件的布局为网格 self .setcentralwidget( self .main_widget) # 设置窗口默认部件 self .plot_widget = qtwidgets.qwidget() # 实例化一个widget部件作为k线图部件 self .plot_layout = qtwidgets.qgridlayout() # 实例化一个网格布局层 self .plot_widget.setlayout( self .plot_layout) # 设置线图部件的布局层 self .plot_plt = pg.plotwidget() # 实例化一个绘图部件 self .plot_plt.showgrid(x = true,y = true) # 显示图形网格 self .plot_layout.addwidget( self .plot_plt) # 添加绘图部件到线图部件的网格布局层 # 将上述部件添加到布局层中 self .main_layout.addwidget( self .plot_widget, 1 , 0 , 3 , 3 ) self .setcentralwidget( self .main_widget) def main(): app = qtwidgets.qapplication(sys.argv) gui = mainui() gui.show() sys.exit(app.exec_()) if __name__ = = '__main__' : main() |
运行上述代码,我们将会得到一个如下图所示的图形界面:
我们的cpu使用率数据将会通过图形界面中间的画布部件显示出来。
三、在pyqtgraph中实时显示cpu数据
创建好了基础的图形界面之后,我们就可以实时获取电脑cpu的使用率然后将其绘制在图形界面上了。
在之前的文章中,我们知道pyqtgraph的绘图数据主要是通过setdata()这个方法来转化为图形。我们可以设置一个定时器,每隔一个时间重新调用setdata()方法对图形数据进行设置,就能够实现实时的数据可视化呈现。下面我们通过代码演示一下:
|
from pyqt5 import qtwidgets,qtcore,qtgui import pyqtgraph as pg import sys import traceback import psutil class mainui(qtwidgets.qmainwindow): def __init__( self ): super ().__init__() self .setwindowtitle( "cpu使用率监控 - 州的先生https://zmister.com" ) self .main_widget = qtwidgets.qwidget() # 创建一个主部件 self .main_layout = qtwidgets.qgridlayout() # 创建一个网格布局 self .main_widget.setlayout( self .main_layout) # 设置主部件的布局为网格 self .setcentralwidget( self .main_widget) # 设置窗口默认部件 self .plot_widget = qtwidgets.qwidget() # 实例化一个widget部件作为k线图部件 self .plot_layout = qtwidgets.qgridlayout() # 实例化一个网格布局层 self .plot_widget.setlayout( self .plot_layout) # 设置k线图部件的布局层 self .plot_plt = pg.plotwidget() # 实例化一个绘图部件 self .plot_plt.showgrid(x = true,y = true) # 显示图形网格 self .plot_layout.addwidget( self .plot_plt) # 添加绘图部件到k线图部件的网格布局层 # 将上述部件添加到布局层中 self .main_layout.addwidget( self .plot_widget, 1 , 0 , 3 , 3 ) self .setcentralwidget( self .main_widget) self .plot_plt.setyrange( max = 100 , min = 0 ) self .data_list = [] self .timer_start() # 启动定时器 时间间隔秒 def timer_start( self ): self .timer = qtcore.qtimer( self ) self .timer.timeout.connect( self .get_cpu_info) self .timer.start( 1000 ) # 获取cpu使用率 def get_cpu_info( self ): try : cpu = "%0.2f" % psutil.cpu_percent(interval = 1 ) self .data_list.append( float (cpu)) print ( float (cpu)) self .plot_plt.plot().setdata( self .data_list,pen = 'g' ) except exception as e: print (traceback.print_exc()) def main(): app = qtwidgets.qapplication(sys.argv) gui = mainui() gui.show() sys.exit(app.exec_()) if __name__ = = '__main__' : main() |
在上述代码中,我们定义了一个1秒钟的计时器,然后定义了一个数据列表data_list,获取到的cpu使用率都将添加到这个列表中,然后作为图形数据传递给pyqtgraph。
运行上述代码,我们可以得到如下动图所示的实时更新图形界面,每一秒获取到的cpu使用率数据都实时绘制为了线条:
由于所有的操作都是在主线程上进行的,会导致图形界面有些许的卡顿,更加理想的做法是创建一个子线程来生成和绘制图形,在此就不作额外的演示了,大家可以自己尝试一下。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://zmister.com/archives/826.html
- python 爬虫图形验证码(Python爬虫实现验证码登录代码实例)
- python图形绘制教程(python绘制漏斗图步骤详解)
- Web.config 图形化编辑器:ASPhere
- canvas绘制渐变图形(Canvas实现放大镜效果完整案例分析附代码)
- pyqt5界面绘图(PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形)
- html5canvas图形怎么打印(HTML5 Canvas 实现K线图的示例代码)
- python 串口图形化(python使用MQTT给硬件传输图片的实现方法)
- css3多边形教学(使用css3绘制出各种几何图形)
- html5的canvas代码(H5最强接口之canvas实现动态图形功能)
- antdesignpro引入依赖如何使用(在Ant Design Pro登录功能中集成图形验证码组件的方法步骤)
- python怎样读取txt文件的数据内容(Python实现读取txt文件中的数据并绘制出图形操作示例)
- css3如何添加图形(CSS3地图动态实例代码圆圈向外扩散)
- mysql图形化管理工具
- 使用canvas画个正方形(canvas绘制树形结构可视图形的实现)
- html5的canvas图形绘制技术(导出HTML5 Canvas图片并上传服务器功能)
- canvas跟随鼠标绘制(如何在Canvas上的图形/图像绑定事件监听的实现)
- 四月新番CP人气榜公布,《剃须》两度上榜,沙优不是女朋友(四月新番CP人气榜公布)
- 2019年外媒秋季新番动画角色CP排行榜,桐人和爱丽丝落榜(2019年外媒秋季新番动画角色CP排行榜)
- 新一小兰领衔 盘点动漫中的那些 远距离恋爱情侣(盘点动漫中的那些)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
热门推荐
- html5横向滚动(解决HTML5中滚动到底部的事件问题)
- python怎么判断对象属性(判断python对象是否可调用的三种方式及其区别详解)
- laravel数据查询(laravel按天、按小时,查询数据的实例)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- pythonlogging模块教学(详解Python logging调用Logger.info方法的处理过程)
- sqlserver技术文档(sql server2016里面的json功能浅析)
- 配置mysql可以远程登录(开启MySQL远程连接的方法)
- python随机生成时间戳(python时间序列按频率生成日期的方法)
- php不能用mysql(php写入mysql中文乱码的实例解决方法)
- 微信小程序映射设置(微信小程序虚拟列表的实现示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9