PyQt5 作图之 pyqtgraph PlotWidget 代码结构拆解
关于 pyqtgraph 的介绍,网上一堆文章,但是涉及到其代码,尤其是 PlotWidget 应用的代码,要么附带的数据过于复杂不好摘,要么代码结构略复杂,对于刚接触的萌新很不友好,因此在这里自己拆解出一套 PlotWidget 代码供大家参考,每个代码都是独立可运行的,数据简单、主要观察代码结构。
要点:独立的 PlotWidget 入门代码,QtDesigner 配合 PlotWidget 作图
1. 最基础版 PlotWidget
采用 QWidget 控件,在其上建立 PlotWidget 控件,通过 pyqtgraph.PlotGraph.plot() 函数来作图,带入到 PyQt5 窗口的主循环中进行展示:
from PyQt5.Qt import *
from pyqtgraph import PlotWidget
from PyQt5 import QtCore# 继承控件 QWidget
class Window(QWidget):def __init__(self):super().__init__()# Window 实例尺寸self.resize(600,600)# PlotWidget 控件实例self.plotWidget_ted = PlotWidget(self)# 设置 PlotWidget 位置尺寸self.plotWidget_ted.setGeometry(QtCore.QRect(25, 25, 550, 550))# 作图self.plotWidget_ted.plot([1, 2, 3, 4, 5], pen='r', symbol='o')if __name__ == '__main__':# 该部分以及结束的 sys.exit(app.exec_()) 是固定的 PyQt5 运行语句import sysapp = QApplication(sys.argv)# 建立窗口实例并展示window = Window()window.show()sys.exit(app.exec_())
2. QtDesigner 参与的 PlotWidget 编码
2.1 QtDesigner 新建布局
窗口中通过 Widget Box 插入 Graphics View 控件:
将该控件提升至 PlotWidget,右键单击添加的 Graphics View 控件,选择 Promote to …
按图中 Base class name 选择 QGraphicsView,Promoted class name 填写 PlotWidget 以及最终的 Header file 输入 pyqtgraph, 点击右侧的 Add:
添加完成,选择该项,点击右下角 Promote
OK 现在我们就完成了 PlotWidget 控件的添加,接下来在 Property Editor 中修改控件名称和尺寸:
2.2 ui 文件转 py 代码文件
将 ui 文件(ted_plot.ui)保存,并通过 PyQt5.uic.pyuic 将 ui 文件转化为 py 代码文件 (ted_plot.py),其代码内容如下:(注意,该代码是由 ui 文件转化而来,不要编辑改动,需要从其他 py 中导入为其添加功能等)
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'ted_plot.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(600, 600)self.plotWidget_ted = PlotWidget(Form)self.plotWidget_ted.setGeometry(QtCore.QRect(25, 25, 550, 550))self.plotWidget_ted.setObjectName("plotWidget_ted")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))
from pyqtgraph import PlotWidgetif __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv)Form = QtWidgets.QWidget()ui = Ui_Form()ui.setupUi(Form)Form.show()sys.exit(app.exec_())
2.3 主程序导入布局并添加作图内容
此时我们有了控制布局的 ted_plot.py ,接下来我们新建个导入布局、添加功能的 py 主程序代码:
from PyQt5.Qt import *
from ted_plot import Ui_Formclass Pane(QWidget, Ui_Form):def __init__(self):super().__init__()self.setupUi(self)self.plot_sth()def plot_sth(self):self.plotWidget_ted.plot([1,2,3,4,5], pen='r', symbol = 'o')if __name__ == '__main__':import sysapp = QApplication(sys.argv)window = Pane()window.show()sys.exit(app.exec_())
这样运行代码,便可出现 PlotWidget 作图窗口,并且可以实现 QtDesigner 设计布局、主程序代码添加作图内容等功能分离。
PyQt5 作图之 pyqtgraph PlotWidget 代码结构拆解相关推荐
- MATLAB仿真作图的流程与代码结构-经验总结
文章目录 流程简述 代码结构 1.第一部分:加载数据 2.第二部分:仿真计算 3.第三部分:绘图 命名规则 流程简述 在长期编写matlab代码中总结出得经验:通过一个合理的流程来写MATLAB代码, ...
- 好的代码结构是什么样的?
一.为什么需要一个好的代码结构 1. 好的代码结构并不仅仅是为了看上去清晰,它更像是我们对一个系统的拆解和组装. 2. 好的代码结构可以让你在遇到代码交接这种天理不容的情况时,减少提刀砍人的可能性. ...
- 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构
版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...
- 微服务实战之春云与刀客(三)—— 面向接口调用代码结构实例
2019独角兽企业重金招聘Python工程师标准>>> 概述 在上一篇中提到了spring cloud 面向接口调用的开发风格,这一篇会举一个简单的但完整的例子来说明整个代码结构. ...
- Python外壳:代码结构!(IF WHILE FOR RANGE...)
#:octothorpe 书中说它是八脚怪物!哈哈! 注释就要在前面加上一个#符号! 在print语句里,恢复正常的符号功能! \连接符号: 这个样子就不会一行输入很多的东西,读起来不舒服!功能也是一 ...
- [转]VSTO Office二次开发RibbonX代码结构
前段时间,碰到对于PPT中控制一些命令的问题,也是很是查找了不少的资料,最后使用的是RibbonX的形式解决的,发现RibbonX也是如此的高效. 文章来自:<细品RibbonX(9):层次分明 ...
- 解读eXtremeComponents代码结构--转载
原文地址:http://blog.csdn.net/lark3/article/details/1937466 大致整理了去年写的东西,罗列如下: ec是一系列提供高级显示的开源JSP定制标签,当前的 ...
- storm源码之storm代码结构【译】
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...
- c++服务器开发学习--02--MySQL,Redis,ASIO,iocp,TrinityCore代码结构,c++对象模型
c++服务器开发学习--02--MySQL,Redis,ASIO,iocp,TrinityCore代码结构,c++对象模型 MySQL 问题 Redis Asio iocp TrinityCore代码 ...
最新文章
- 央视深入报道,国内主流芯片真实水平如何?
- Matlab-贪心/贪婪算法
- Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
- nginx多站点配置,以及隐藏index.php
- ffmpeg H264 编解码配置
- window.onbeforeunload() 事件调用ajax的解决方法
- Appium+python的单元测试框架unittest(2)——fixtures(转)
- chrome+android+浏览器下载图片不显示,chrome谷歌浏览器部分图片不显示怎么办
- vissim跟驰模型_MATLAB——基于元胞自动机的单向3车道模型
- ShellExecuteA URLDownloadToFileA
- npm和gulp学习
- 六石管理学:夸大成绩,当事人自己是否知道
- 分享 MSDN 下载工具(Word/PDF)
- 17张程序员壁纸推荐,是否有一张你喜欢的?
- 根据身份证号得到籍贯、性别、出生日期、验证身份证号
- 微信公众号-百度通用翻译API接入文档
- 传说中的世界500强面试题-
- Android最新技术-Android11周
- Win10下Windows徽标键快捷键大全
- 多彩M618XSD垂直立式人体工学鼠标拆解
热门文章
- 【连接池】Tomcat 连接池中 maxActive,maxWait,maxAge,testOnBorrow,testWhileIdle等选项的作用
- Linux 2.6 CFS 调度算法内幕
- Dubbo原理简单分析
- OSX的一些基本知识
- FTP如何用计算机名,ftp服务器使用虚拟主机名(怎么设置ftp服务器)
- 转帖:BTree,B-Tree,B+Tree,B*Tree都是什么
- SpringBoot:概述,注解,搭建,部署
- router传参接参(详细)
- 第三讲 Matlab/Simulink入门——离散系统仿真实例
- 计算机视觉领域推荐期刊和会议评分标准