【pyqtgraph繪圖】Qt速成課程
解讀官方API-Qt速成課程
參考:http://www.pyqtgraph.org/documentation/qtcrashcourse.html
Qt速成課程
PyQtGraph廣泛使用Qt來生成幾乎所有的可視化輸出和接口。Qt的文檔編寫得非常好,我們鼓勵所有pyqtgraph開發人員熟悉它。
本節的目的是介紹使用Qt(使用PyQt或PySide)為pyqtgraph開發人員編程。
QWidgets和布局
Qt GUI幾乎總是由幾個基本組件組成:
- 一個窗口。這通常由QMainWindow提供,但請註意,如果窗口小部件沒有父窗口,則只需調用widget.show() 即可在其窗口中顯示所有QWidgets。
- 多個QWidget實例。如QPushButton,QLabel,QComboBox等。
- QLayout實例(可選,但建議有布局),它自動管理窗口小部件的位置,允許GUI可根據用戶需要調整大小。
PyQtGraph通過提供自己的QWidget子類來嵌入到開發者已經用Qt、PyQt寫好的GUI中
例:
from PyQt5.QtWidgets import QPushButton,QWidget,QApplication,QGridLayout,QListWidget,QLineEdit import pyqtgraph as pg ## 初始化pyqt app = QApplication([])## 定義頂級窗口部件來保存所有內容 w = QWidget() ## 創建一些小部件放在頂級窗口中 btn = QPushButton(‘press me‘) text = QLineEdit(‘enter text‘) listw = QListWidget() plot = pg.PlotWidget() ## 創建網格布局以管理窗口小部件的大小和位置 layout = QGridLayout() w.setLayout(layout) ## 將部件添加到布局中的適當位置 layout.addWidget(btn, 0, 0) layout.addWidget(text, 1, 0) layout.addWidget(listw,2, 0) layout.addWidget(plot, 0, 1, 3, 1) ## 將部件顯示為新窗口 w.show() ## 啟動pyqt事件循環 app.exec_()
可以使用Qt Designer以可視化拖拽方式設計更復雜的界面,
這樣您只需將窗口小部件拖動到窗口中即可定義其外觀。
命名約定
事實上,pyqtgraph中的每個類都是Qt提供的基類的擴展。在閱讀文檔時,請記住所有Qt的類都以字母“Q”開頭,而pyqtgraph的類則不是。
在閱讀任何類的方法時,查看使用哪些Qt基類和查看Qt文檔 通常很有幫助。
Qt的大多數類定義了從常規方法中難以區分的信號。
由pyqtgraph定義的幾乎所有信號表達都以‘sig‘開頭,表示這些信號不是在Qt級別定義。
在大多數情況下,以“Widget”結尾的類是從QWidget繼承的,因此可以用作Qt窗口中的GUI元素。
以‘Item‘結尾的類是QGraphicsItem的子類,只能在QGraphicsView實例中顯示(例如GraphicsLayoutWidget或PlotWidget)。
信號,插槽和事件
[想要了解更多..請在pyqtgraph論壇上發帖請求,如果你想閱讀更多]
Qt通過執行其事件循環來檢測並響應用戶交互。
- 事件循環中會發生什麽?
- 我什麽時候需要使用QApplication.exec_()?
- 我對事件循環執行有什麽控制?(QApplication.processEvents)
GraphicsView和GraphicsItems
有關Qt GraphicsView架構的更多信息:http://qt-project.org/doc/qt-4.8/graphicsview.html
坐標系統和轉換(Coordinate Systems and Transformations)
有關Qt GraphicsView中坐標系的更多信息:http://qt-project.org/doc/qt-4.8/graphicsview.html#the-graphics-view-coordinate-system
Mouse and Keyboard Input
QTimer, Multi-Threading
Multi-threading vs Multi-processing in Qt
【pyqtgraph繪圖】Qt速成課程