关于 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 代码结构拆解相关推荐

  1. MATLAB仿真作图的流程与代码结构-经验总结

    文章目录 流程简述 代码结构 1.第一部分:加载数据 2.第二部分:仿真计算 3.第三部分:绘图 命名规则 流程简述 在长期编写matlab代码中总结出得经验:通过一个合理的流程来写MATLAB代码, ...

  2. 好的代码结构是什么样的?

    一.为什么需要一个好的代码结构 1. 好的代码结构并不仅仅是为了看上去清晰,它更像是我们对一个系统的拆解和组装. 2. 好的代码结构可以让你在遇到代码交接这种天理不容的情况时,减少提刀砍人的可能性. ...

  3. 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构

    版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...

  4. 微服务实战之春云与刀客(三)—— 面向接口调用代码结构实例

    2019独角兽企业重金招聘Python工程师标准>>> 概述 在上一篇中提到了spring cloud 面向接口调用的开发风格,这一篇会举一个简单的但完整的例子来说明整个代码结构. ...

  5. Python外壳:代码结构!(IF WHILE FOR RANGE...)

    #:octothorpe 书中说它是八脚怪物!哈哈! 注释就要在前面加上一个#符号! 在print语句里,恢复正常的符号功能! \连接符号: 这个样子就不会一行输入很多的东西,读起来不舒服!功能也是一 ...

  6. [转]VSTO Office二次开发RibbonX代码结构

    前段时间,碰到对于PPT中控制一些命令的问题,也是很是查找了不少的资料,最后使用的是RibbonX的形式解决的,发现RibbonX也是如此的高效. 文章来自:<细品RibbonX(9):层次分明 ...

  7. 解读eXtremeComponents代码结构--转载

    原文地址:http://blog.csdn.net/lark3/article/details/1937466 大致整理了去年写的东西,罗列如下: ec是一系列提供高级显示的开源JSP定制标签,当前的 ...

  8. storm源码之storm代码结构【译】

    说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...

  9. c++服务器开发学习--02--MySQL,Redis,ASIO,iocp,TrinityCore代码结构,c++对象模型

    c++服务器开发学习--02--MySQL,Redis,ASIO,iocp,TrinityCore代码结构,c++对象模型 MySQL 问题 Redis Asio iocp TrinityCore代码 ...

最新文章

  1. 央视深入报道,国内主流芯片真实水平如何?
  2. Matlab-贪心/贪婪算法
  3. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection
  4. nginx多站点配置,以及隐藏index.php
  5. ffmpeg H264 编解码配置
  6. window.onbeforeunload() 事件调用ajax的解决方法
  7. Appium+python的单元测试框架unittest(2)——fixtures(转)
  8. chrome+android+浏览器下载图片不显示,chrome谷歌浏览器部分图片不显示怎么办
  9. vissim跟驰模型_MATLAB——基于元胞自动机的单向3车道模型
  10. ShellExecuteA URLDownloadToFileA
  11. npm和gulp学习
  12. 六石管理学:夸大成绩,当事人自己是否知道
  13. 分享 MSDN 下载工具(Word/PDF)
  14. 17张程序员壁纸推荐,是否有一张你喜欢的?
  15. 根据身份证号得到籍贯、性别、出生日期、验证身份证号
  16. 微信公众号-百度通用翻译API接入文档
  17. 传说中的世界500强面试题-
  18. Android最新技术-Android11周
  19. Win10下Windows徽标键快捷键大全
  20. 多彩M618XSD垂直立式人体工学鼠标拆解

热门文章

  1. 【连接池】Tomcat 连接池中 maxActive,maxWait,maxAge,testOnBorrow,testWhileIdle等选项的作用
  2. Linux 2.6 CFS 调度算法内幕
  3. Dubbo原理简单分析
  4. OSX的一些基本知识
  5. FTP如何用计算机名,ftp服务器使用虚拟主机名(怎么设置ftp服务器)
  6. 转帖:BTree,B-Tree,B+Tree,B*Tree都是什么
  7. SpringBoot:概述,注解,搭建,部署
  8. router传参接参(详细)
  9. 第三讲 Matlab/Simulink入门——离散系统仿真实例
  10. 计算机视觉领域推荐期刊和会议评分标准