Matplotlib植入PyQt5 + QT5的UI呈现
实现matplotlib图形通过PyQt5+Qt5在GUI中呈现步骤:
第一步,通过matplotlib.backends.backend_qt5agg类来连接PyQt5:
import matplotlib
matplotlib.use("Qt5Agg") # 声明使用QT5
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
第二步,具体图形代码实现部分,例:
class Figure_Canvas(FigureCanvas): # 通过继承FigureCanvas类,使得该类既是一个PyQt5的Qwidget,又是一个matplotlib的FigureCanvas,这是连接pyqt5与matplot lib的关键
def __init__(self, parent=None, width=11, height=5, dpi=100):
fig = Figure(figsize=(width, height), dpi=100) # 创建一个Figure,注意:该Figure为matplotlib下的figure,不是matplotlib.pyplot下面的figure
FigureCanvas.__init__(self, fig) # 初始化父类
self.setParent(parent)
self.axes = fig.add_subplot(111) # 调用figure下面的add_subplot方法,类似于matplotlib.pyplot下面的subplot方法
def test(self):
x = [1,2,3,4,5,6,7,8,9]
y = [23,21,32,13,3,132,13,3,1]
self.axes.plot(x, y)
第三步,GUI上通过控件呈现matplotlib画出来的图形——通过QtWidgets.QGraphicsView控件来实现:(代码部分仅呈现QtWidgets.QGraphicsView的实现步骤)
self.gridLayoutWidget = QtWidgets.QWidget()
self.gridLayoutWidget.setGeometry(QtCore.QRect(180, 10, 1100, 500)) # 定义gridLayout控件的大小和位置,4个数字分别为左边坐标,上边坐标,长,宽
self.gridLayoutWidget.setObjectName("gridLayoutWidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget)
self.gridLayout_2.setContentsMargins(0, 0, 0, 0) # 在gridLayoutWidget 上创建一个网格Layout,注意以gridLayoutWidget为参
self.gridLayout_2.setObjectName("gridLayout_2")
# ===通过graphicview来显示图形
self.graphicview = QtWidgets.QGraphicsView(self.gridLayoutWidget) # 第一步,创建一个QGraphicsView,注意同样以gridLayoutWidget为参
self.graphicview.setObjectName("graphicview")
self.gridLayout_2.addWidget(self.graphicview, 0, 0) 第二步,将该QGraphicsView放入Layout中 dr = Figure_Canvas() 实例化一个FigureCanvas
dr.test() # 画图
graphicscene = QtWidgets.QGraphicsScene() # 第三步,创建一个QGraphicsScene,因为加载的图形(FigureCanvas)不能直接放到graphicview控件中,必须先放到graphicScene,然后再把graphicscene放到graphicview中
graphicscene.addWidget(dr) # 第四步,把图形放到QGraphicsScene中,注意:图形是作为一个QWidget放到QGraphicsScene中的
self.graphicview.setScene(graphicscene) # 第五步,把QGraphicsScene放入QGraphicsView
self.graphicview.show() # 最后,调用show方法呈现图形!Voila!!
Matplotlib植入PyQt5 + QT5的UI呈现的更多相关文章
- 妙方之解决matplotlib的图例里的中文呈现小方形
妙方之解决matplotlib的图例里的中文呈现小方形 分析思路: 每个中文都对应地呈现一个小方形, 不多也不少. 不能说是乱码. 应该是matplotlib的默认字库不支持中文造成的. 应对办法: ...
- 完美配置Python3.5+Anaconda+PyQt5,实现UI和其他模块的结合
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- qt5的.ui文件在VS2010中无法编译问题
自己手动添加的.ui文件在VS中是无法右键编译的,也即是说,在用QT designer编辑过的.ui文件无法实时更新相应的ui_XX.h文件,造成调试结果无法显示编辑过的新界面. 解决办法: 右键.u ...
- Pyqt5.2.1生成的.ui文件转换成.py
cmd C:\>pyuic5 ui文件路径 -o 要生成的py文件路径 如下: C:\>pyuic5 c:\python33\lib\site-packages\pyqt5\uic\log ...
- UI僵死分析
原因剖析 UI僵死无非只是因为UI线程因繁忙而无法去接受用户的响应.详细说来内在原因有以下两个: 正常的业务代码写在UI线程中执行,业务代码的任务繁重导致UI线程无法分身去接受用户的界面输入 UI控件 ...
- 调用链系列一、Zipkin架构介绍、Springboot集承(springmvc,HttpClient)调用链跟踪、Zipkin UI详解
1.Zipkin是什么 Zipkin分布式跟踪系统:它可以帮助收集时间数据,解决在microservice架构下的延迟问题:它管理这些数据的收集和查找:Zipkin的设计是基于谷歌的Google Da ...
- Python3.6使用Pyqt5编写GUI程序
Python3.6使用Pyqt5编写HTTP测试工具 程序非常简单,使用PYQT5搭建好UI,然后用PyUIC生成Python文件,Mac中使用Pycharm+Python3.6+Pyqt5搭建教程在 ...
- WPF 同一窗口内的多线程 UI(VisualTarget)
WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程的 UI,大家也会想到使用另一个窗口来实现,让每个窗口拥有自己的 UI 线程.然而,就不能让 ...
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
随机推荐
- Cookie的介绍
Cookie是某些站点为了辨别用户身份而存在用户本地终端上的数据.Cookie总是保存在client中,可分为内存 Cookie和硬盘Cookie,而依照时间划分.又能够分为非持久Cookie和持久C ...
- Android 应用开发实例之情景模式
2013-07-01 Android 应用开发实例 1. 情景模式 使用TabHost来实现主界面的布局. 设置一组RadioButton来切换不同的情景模式. 对比普通情景模式,定时情景模式需要加上 ...
- 多对多关系数据库表 java描述
多对多关系 需要建立一张新表存放它们的对应数据 sql语句 create table teacher( id int primary key, name ), ,) ); create table s ...
- 新浪微博XSS攻击事件
http://blog.csdn.net/terryzero/article/details/6575078 6月28日20时14分左右开始,新浪微博出现了一次比较大的XSS攻击事件.大量用户自动发送 ...
- dango models and database ---- relation ship
一.django自带的ORM中可以定义表与表之间的对应关系.现比较一下各个不同关系之间数据库端的实现 1.ForeignKey(ManyToOne)关系 from django.db import m ...
- atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js
atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js 1. 图片按钮的效果总结 1 1.1. 按钮图片自动缩放的. 1 1.2. 不要 ...
- [转]html5调用摄像头实例
原文:https://blog.csdn.net/binquan_liang/article/details/79489989 最近在学习在做HTML5的项目,看了博客上html5调用摄像头拍照的文章 ...
- Decoration2:引入Angularjs显示前台一条数据
SpringMVC内置的RestFul API格式采用的是最复杂最全面的HATEOAS规范,对于简单应用来说,前台解析起来不方便,我们下面主要想办法重新定义一种简单的RestFulAPI. (1)先是 ...
- MySQL中的Multi-Range Read优化
MySQL 5.6开始支持Multi-Range Read(MRR)优化.目的是味儿减少磁盘的随机访问,并且将随机访问转化为较为顺序的数据访问,这对IO-bound类型的SQL查询语句可带来性能极大的 ...
- 使用 ChromaKey 滤镜进行抠图
简介 Nokia Imaging SDK 1.0 中新提供的 ChromaKey 滤镜是一个神奇的滤镜,它的基本原理就是把 一个指定范围值内的颜色变为透明或半透明,比如下面的 demo 演示的,看上 ...