1. 程式人生 > >【pyqtgraph繪圖】Qt速成課程

【pyqtgraph繪圖】Qt速成課程

循環 ras 用戶 enter code 一個 cti 可視化 發生

解讀官方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速成課程