pyqtgraph介绍
官网
强大的绘图工具,性能较比于matplotlab性能更高,支持三维、图像分析、简单图像处理模块。
如何QtDesigner声明控件
由于pyqt和pyside为基础的控件库,pyqtgraph是在其基础上开发的绘图库。
使用pyqtgraph第三方库,需要在QtDesigner声明,流程如下:
-
本次使用的是PlotWidget,位于第三方库pyqtgraph/core.h下,其父类为GraphicsView,下面我们就使用父类GraphicsView提升为PlotWidget。打开Designer(D:\SoftWare\AnacondaNew\envs\pyqt\Scripts\pyside2-designer.exe,安装PysSide之后的Designer位置)
-
右击移出的控件GraphicsView,点击 提升为
总的来说,上述流程完成了声明的工作,相当于在文件中加入下面一句话。
from pyqtgraph/core import PlotWidget
加载第三方库控件
pyqt比较简单,直接加载UI文件就行,然后就可以访问控件对象。
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtWidgets, uic
class Stock:
def __init__(self):
# PyQt5 直接加载ui文件
# 因为 第三方控件通过promote的定义
# 已经可以知道 控件类所在模块的路径
self.ui = uic.loadUi("main.ui")
hour = [1,2,3,4,5,6,7,8,9,10]
temperature = [30,32,34,32,33,31,29,32,35,45]
self.ui.historyPlot.plot(hour, temperature)
app = QApplication([])
stock = Stock()
stock.ui.show()
app.exec_()
PySide需要使用QUiLoader函数,注册第三方控件,然后就可以正常加载使用。
from PySide2.QtWidgets import QApplication
from PySide2.QtUiTools import QUiLoader
import pyqtgraph as pg
class Stock:
def __init__(self):
loader = QUiLoader()
# pyside2 一定要 使用registerCustomWidget
# 来注册 ui文件中的第三方控件,这样加载的时候
# loader才知道第三方控件对应的类,才能实例化对象
loader.registerCustomWidget(pg.PlotWidget)
self.ui = loader.load("main.ui")
hour = [1,2,3,4,5,6,7,8,9,10]
temperature = [30,32,34,32,33,31,29,32,35,45]
# 通过控件名称 historyPlot,找到Qt designer设计的 控件
self.ui.historyPlot.plot(hour,temperature)
app = QApplication([])
stock = Stock()
stock.ui.show()
app.exec_()