官方文档
官方网站
仅翻译记录一些重要内容
How to use pyqtgraph
命令行
使用下面两行简单的命令,可以打印data,data可以是一个list或者一个numpy 数组。命令将自动打开并显示一个新的window,在window里显示data所包含的线图
1 2 | import pyqtgraph as pg pg.plot(data) |
对pg.plot的调用将返回所创建的plot小部件的句柄,从而允许将更多数据添加到同一窗口中。但是通过打印pg.plot()返回值的类型,发现是pyqtgraph.graphicsWindows.PlotWindow类
更多例子
1 2 3 4 5 6 7 8 9 | 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来适应此方案。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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)中显示。
待续。。。