How to use pyqtgraph
命令行
使用下面两行简单的命令,可以打印data,data可以是一个list或者一个numpy 数组。命令将自动打开并显示一个新的window,在window里显示data所包含的线图
import pyqtgraph as pg
pg.plot(data)
对pg.plot的调用将返回所创建的plot小部件的句柄,从而允许将更多数据添加到同一窗口中。但是通过打印pg.plot()返回值的类型,发现是pyqtgraph.graphicsWindows.PlotWindow类
更多例子
pw = pg.plot(xVals, yVals, pen='r') # plot x vs y in red
pw.plot(xVals, yVals2, pen='b')
win = pg.GraphicsWindow() # Automatically generates grids with multiple items
win.addPlot(data1, row=0, col=0)
win.addPlot(data2, row=0, col=1)
win.addPlot(data3, row=1, col=0, colspan=2)
pg.show(imageData) # imageData must be a numpy array with 2 to 4 dimensions
这里仅介绍表面,这些函数接受许多不同的数据格式和用于自定义数据外观的选项。
在PyQt内部嵌入小部件(widgets)
pyqtgraph中的所有功能都可以通过可嵌入窗口小部件使用,就像嵌入其他任何Qt窗口小部件一样。详细信息参见:PlotWidget, ImageView, GraphicsLayoutWidget和GraphicsView。PyQtGraph的小部件可以通过"Promote to…"功能添加到.ui文件中
QWidgets 和 Layouts
一个Qt GUI总是包含一些基本要素
- Window. 通常由QMainWindow提供。请注意所有QWidgets都可以通过调用widget.show()在window中显示,如果widget没有父类的话
- 多个QWidget实例,例如QPushButton, QLabel, QCombobox等
- QLayout 实例(可选,但强烈推荐),layout能够自动管理和定位一些widgets,使GUI界面更美观
PyQtGraph通过提供其自己的QWidget子类以插入您的GUI来适应此方案。
例子:
from PyQt5 import QtGui # (the example applies equally well to PySide)
import pyqtgraph as pg
## Always start by initializing Qt (only once per application)
app = QtGui.QApplication([])
## Define a top-level widget to hold everything
w = QtGui.QWidget()
## Create some widgets to be placed inside
btn = QtGui.QPushButton('press me')
text = QtGui.QLineEdit('enter text')
listw = QtGui.QListWidget()
plot = pg.PlotWidget()
## Create a grid layout to manage the widgets size and position
layout = QtGui.QGridLayout()
w.setLayout(layout)
## Add widgets to the layout in their proper positions
layout.addWidget(btn, 0, 0) # button goes in upper-left
layout.addWidget(text, 1, 0) # text edit goes in middle-left
layout.addWidget(listw, 2, 0) # list widget goes in bottom-left
layout.addWidget(plot, 0, 1, 3, 1) # plot goes on right side, spanning 3 rows
## Display the widget as a new window
w.show()
## Start the Qt event loop
app.exec_()
命名规则
几乎pyqtgraph中的每个类都是Qt提供的基类的扩展。 阅读文档时,请记住,Qt的所有类都以字母“ Q”开头,而pyqtgraph的类则不是。 当通读任何类的方法时,通常有助于查看使用了哪些Qt基类并浏览Qt文档。
Qt的大多数类都定义了信号(signal),除了常规方法外,这些信号很难分辨。 pyqtgraph明确定义的几乎所有信号都以“ sig”开头命名,以指示这些信号未在Qt级别定义。
在大多数情况下,以“ Widget”结尾的类是QWidget的子类,因此可以用作Qt窗口中的GUI元素。 以“ Item”结尾的类是QGraphicsItem的子类,并且只能在QGraphicsView实例(例如GraphicsLayoutWidget或PlotWidget)中显示。
待续。。。