Python Qt GUI 與數據可視化編程

王維波 慄寶鵑 張曉東

  • Python Qt GUI 與數據可視化編程-preview-1
  • Python Qt GUI 與數據可視化編程-preview-2
Python Qt GUI 與數據可視化編程-preview-1

買這商品的人也買了...

商品描述

本書介紹在Python中使用PyQt5和其他模塊進行GUI和數據可視化編程的方法。第一部分介紹PyQt5設計GUI程序的基本框架,包括GUI應用程序的基本結構、窗體UI可視化設計與窗體業務邏輯的設計、信號與槽的特點和使用等。第二部分介紹GUI程序設計中一些主要功能模塊的使用,包括基本界面組件、事件處理、數據庫、繪圖、多媒體等。第三部分先介紹使用PyQtChart和PyQtDataVisualization進行二維和三維數據可視化設計的方法,再介紹將Matplotlib嵌入PyQt5 GUI應用程序窗口界面中進行數據可視化的編程方法。通過研讀本書,讀者可以掌握使用PyQt5、PyQtChart、Matplotlib等模塊進行GUI應用程序和數據可視化設計的方法。

本書適合具有Python編程基礎,並想通過Python設計GUI應用程序或在GUI應用程序中實現數據可視化的讀者閱讀和參考。

作者簡介

王維波
博士,大學教師,從事測控技術與儀器專業相關的工作,主要研究地球物理探測儀器開發、監測數據處理方法和軟件開發。著有《Qt 5.9 C++開髮指南》一書。

栗寶鵑
博士,科研人員,主要從事地球物理、水下探測、遙感等專業方向的數據處理和圖像識別方面的研究工作,在日常工作中常使用Qt和Python解決實際問題。

張曉東
博士,大學教師,從事自動化專業相關的教學工作,研究方向主要是優化算法、最優控制和智能控制。具有豐富的編程經驗,善於通過Qt C++和Python的結合提高算法效率。

目錄大綱

第一部分PyQt5開發基礎
第1章開發環境安裝2 
1.1 Python 2 
1.1.1 Python簡介2 
1.1.2 Python的下載與安裝2 
1.1.3 IDLE的基本使用3 
1.1.4安裝Python包4 
1.2 Qt 5 
1.2 .1 Qt簡介5 
1.2.2 Qt的下載與安裝5 
1.2.3 Qt的幾個工具軟件7 
1.2.4 Qt Creator的設置7 
1.3 PyQt5 8 
1.3.1 PyQt5簡介8 
1.3.2 PyQt5安裝9 
1.3.3在IDLE中開啟對PyQt5的代碼提示功能10 

第2章PyQt5 GUI程序框架11 
2.1 PyQt5 GUI程序的基本框架11 
2.2使用可視化設計窗體的GUI程序12 
2.2.1用UI Designer可視化設計窗體13 
2.2. 2將ui文件編譯為py文件16 
2.2.3使用Ui_FormHello類的GUI程序框架18 
2.2.4界面與邏輯分離的GUI程序框架19 
2.3信號與槽的使用23 
2.3.1信號與槽功能概述23
2.3.2 Qt Creator的使用23 
2.3.3窗體可視化設計25 
2.3.4界面組件佈局管理26 
2.3.5組件的信號與內建槽函數的關聯29 
2.3.6 PyQt5 GUI項目程序框架30 
2.3.7為組件的內建信號編寫槽函數35 
2.4自定義信號的使用39 
2.4.1信號與槽的一些特點和功能39 
2.4.2自定義信號使用示例40 
2.4.3使用信號與槽的一些注意事項43 
2.5資源文件的使用43 
2.5.1功能概述43 
2.5.2窗體可視化設計44 
2.5.3創建和使用資源文件44 
2.5.4窗體文件和資源文件的編譯45 
2.5.5窗體業務邏輯類的設計46 
2.5.6為應用程序設置圖標47 
2.6從Qt C++類庫到PyQt5 47 
2.6.1幫助信息的查找47 
2.6.2正確導入模塊中的類49 
2.6.3部分類和接口函數的差異50 
2.6 .4數據類型對應關係51 
2.7 3個單窗體GUI項目模板52 
2.7.1概述52 
2.7.2 dialogApp項目模板53 
2.7.3 widgetApp項目模板54
2.7.4 mainWindowApp項目模板55 
2.7.5使用項目模板和實例源程序56 
2.7.6在Eric中編輯和運行示例程序57 

第二部分GUI應用程序設計
第3章常用界面組件的使用60 
3.1數據輸入輸出60 
3.2 QPushButton 62 
3.3 QSlider和QProgressBar 64 
3.4日期時間數據66 
3.4.1日期時間類和界面組件66 
3.4.2日期時間數據的獲取並轉換為字符串67 
3.4.3字符串轉換為日期時間68 
3.4. 4 QLineEdit的inputMask 68 
3.5定時器QTimer 69 
3.6下拉列錶框QComboBox 70 
3.6.1 QComboBox功能概述70 
3.6.2簡單的ComboBox操作71 
3.6.3帶用戶數據的ComboBox 72 
3.6.4 QComboBox常用函數總結73 
3.7 QMainWindow與QAction 73 
3.7.1功能簡介73 
3.7.2窗體可視化設計75 
3.7.3界面操作功能的代碼實現77 
3.8 QListWidget和QToolButton 80 
3.8.1功能概述80
3.8.2窗體可視化設計81 
3.8.3 QToolButton與下拉式菜單84 
3.8.4 QListWidget的操作85 
3.8.5創建右鍵快捷菜單88 
3.9 QTreeWidget和QDockWidget 88 
3.9.1功能概述88 
3.9.2窗體可視化設計90 
3.9.3 QTreeWidget操作91 
3.9.4 QLabel和QPixmap顯示圖片96 
3.9.5 QDockWidget的操作97 
3.10 QTableWidget 98 
3.10.1 QTableWidget概述98 
3.10.2窗體設計與初始化99 
3.10.3 QTableWidget操作100 
3.11容器類組件與佈局設計105 
3.11.1 QGroupBox組件與水平佈局106 
3.11.2佈局的layoutStretch屬性106 
3.11.3網格狀佈局107 
3.11.4分割條108 

第4章Model/View結構109 
4.1 Model/View結構109 
4.1.1 Model/View結構基本原理109 
4.1.2 Model(數據模型) 110 
4.1.3 View(視圖) 111 
4.1.4 Delegate(代理) 111
4.1.5 Model/View結構的一些概念112 
4.2 QFileSystemModel 114 
4.2.1 QFileSystemModel類的基本功能114 
4.2.2 QFileSystemModel的使用114 
4.3 QStringListModel 116 
4.3.1 QStringListModel功能概述116 
4.3.2 QStringListModel的使用116 
4.4 QStandardItemModel 119 
4.4.1功能概述119 
4.4.2界面設計120 
4.4.3 QStandardItemModel的使用120 
4.5自定義代理128 
4.5.1自定義代理的功能128 
4.5.2自定義代理類的基本設計要求128 
4.5.3基於QDoubleSpinBox的自定義代理類129 
4.5.4基於QComboBox的自定義代理類130 
4.5.5自定義代理類的使用131 

第5章事件處理133 
5.1默認事件處理133 
5.1.1應用程序的事件循環133 
5.1.2事件類型與默認的事件處理函數133 
5.1.3事件與信號的關係137 
5.2事件攔截與事件過濾139 
5.2.1 event()函數的作用139
5.2.2事件過濾器140 
5.2.3事件隊列的及時處理141 
5.3拖放事件與拖放操作142 
5.3.1拖放操作相關事件142 
5.3.2外部文件拖放操作示例143 
5.4具有拖放操作功能的組件146 
5.4.1功能概述146 
5.4.2界面設計與初始化147 
5.4.3拖放操作屬性的顯示148 
5.4.4拖放屬性的設置149 
5.4.5通過事件過濾器實現項的刪除150 

第6章對話框與多窗口設計151 
6.1標準對話框151 
6.1.1概述151 
6.1.2 QFileDialog對話框152 
6.1.3 QColorDialog對話框154 
6.1.4 QFontDialog對話框154 
6.1.5 QProgressDialog對話框155 
6.1.6 QInputDialog輸入對話框156 
6.1.7 QMessageBox消息對話框157 
6.2自定義對話框及其使用159 
6.2.1對話框的不同調用方式159 
6.2.2示例項目的文件組成160 
6.2.3主窗口的設計與初始化161 
6.2.4對話框QmyDialogSize的創建和使用163
6.2.5對話框QmyDialogHeaders的創建和使用165 
6.2.6對話框QmyDialogLocate的創建和使用166 
6.3多窗口應用程序170 
6.3.1主要的窗體類及其用途170 
6.3.2窗體類重要特性的設置170 
6.3.3多窗口應用程序設計示例172 
6.4 MDI應用程序設計179 
6.4.1 MDI簡介179 
6.4.2文檔窗體類QmyFormDoc的設計180 
6.4.3主窗口設計與子窗口的使用181 

第7章數據庫185 
7.1 Qt SQL模塊概述185 
7.1.1 Qt SQL支持的數據庫185 
7.1.2 SQLite數據庫185 
7.1.3 Qt SQL模塊的主要類187 
7.2 QSqlTableModel的使用188 
7.2.1功能概述188 
7.2.2窗體可視化設計190 
7.2.3窗體業務邏輯類的設計和初始化190 
7.2.4打開數據庫和數據表191 
7.2.5添加、插入與刪除記錄197 
7.2.6保存與取消修改198 
7.2.7設置和清除照片199 
7.2 .8數據記錄的遍歷199 
7.2.9記錄的排序200 
7.2.10記錄的過濾200
7.3 QSqlQueryModel的使用201 
7.3.1 QSqlQueryModel功能概述201 
7.3.2窗體業務邏輯類的設計和初始化202 
7.3.3打開數據庫和查詢數據202 
7.3.4記錄移動205 
7.4 QSqlQuery的使用206 
7.4.1 QSqlQuery基本用法206 
7.4.2 QSqlQueryModel和QSqlQuery聯合使用207 
7.5 QSqlRelationalTableModel的使用215 
7.5.1關係數據表和示例功能215 
7.5.2關係數據模型功能實現216 

第8章繪圖219 
8.1 QPainter繪圖219 
8.1.1 QPainter繪圖系統219 
8.1.2 QPen的主要功能221 
8.1.3 QBrush的主要功能223 
8.1.4漸變填充224 
8.1.5 QPainter繪製基本圖形227 
8.2坐標系統和坐標變換230 
8.2.1坐標變換函數230 
8.2.2坐標變換繪圖實例231 
8.2.3視口和窗口234 
8.2.4繪圖疊加的效果236 
8.3自定義界面組件237 
8.3.1功能概述237
8.3.2自定義QWidget子類QmyBattery 237 
8.3.3 QmyBattery類的使用239 
8.4 Graphics View繪圖架構241 
8.4.1場景、視圖與圖形項241 
8.4.2 Graphics View的坐標系統242 
8.4.3 Graphics View相關的類243 
8.4.4 Graphics View程序基本結構246 
8.4.5 Graphics View繪圖程序示例250 

第9章文件261 
9.1文件操作相關類概述261 
9.1.1文件操作接口類QFile 261 
9.1.2文件流操作類QTextStream和QDataStream 262 
9.1.3目錄和文件操作相關的類262 
9.2文本文件讀寫263 
9.2.1功能概述263 
9.2.2 QFile讀寫文本文件263 
9.2.3 QFile和QTextStream結合讀寫文本文件266 
9.2.4 Python內建函數讀寫文本文件268 
9.3二進製文件讀寫269 
9.3.1基礎知識和工具軟件269 
9.3.2 QDataStream功能概述271 
9.3.3 QDataStream流化數據讀寫272 
9.3.4 QDataStream原始數據讀寫281
9.4目錄和文件操作288 
9.4.1目錄和文件操作相關的類288 
9.4.2示例功能概述288 
9.4.3 QFile類290 
9.4.4 QFileInfo類291 
9.4.5 QDir類292 
9.4.6 QFileSystemWatcher類294 

第10章多媒體297 
10.1 PyQt5多媒體模塊功能概述297 
10.2音頻播放298 
10.2.1使用QMediaPlayer播放音樂文件298 
10.2.2使用QSoundEffect和QSound播放音效文件303 
10.3音頻輸入304 
10.3.1使用QAudioRecorder錄製音頻304 
10.3.2使用QAudioInput獲取音頻輸入310 
10.4視頻播放317 
10.4.1在QVideoWidget上顯示視頻317 
10.4.2在QGraphicsVideoItem上播放視頻321 
10.5攝像頭的使用322 
10.5.1攝像頭操作概述322 
10.5.2示例功能和界面可視化設計324 
10.5 .3使用攝像頭拍照324 
10.5.4使用QMediaRecorder通過攝像頭錄像328 

第11章GUI設計增強技術329
11.1多語言界面329 
11.1.1多語言界面設計概述329 
11.1.2多語言界面設計示例331 
11.2 QSS定制界面336 
11.2.1 Qt樣式表的作用336 
11.2.2 Qt樣式表句法337 
11.2.3 Qt樣式表的使用342 

第三部分數據可視化
第12章PyQtChart二維繪圖346 
12.1 PyQtChart概述346 
12.1.1模塊安裝與基本功能346 
12.1.2一個簡單的PyQtChart繪圖程序347 
12.1.3圖表的主要組成部分348 
12.2 QChart繪製折線圖350 
12.2.1示例功能概述與界面設計350 
12.2.2 QPen屬性設置對話框設計351 
12.2.3主窗口業務邏輯類初始化353 
12.2.4圖表各組成部件的屬性設置356 
12.3 QChart繪圖高級功能365 
12.3.1功能概述365 
12.3.2自定義類QmyChartView 366 
12.3.3主窗口可視化設計368 
12.3.4繪圖功能的實現368 
12.4對數坐標軸和多坐標軸373 
12.4.1功能概述373 
12.4. 2主窗口可視化設計374
12.4.3界面和圖表初始化374 
12.4.4載入數據文件並繪製曲線375 
12.5餅圖和各種柱狀圖377 
12.5.1功能概述377 
12.5.2窗口初始化與數據準備378 
12.5.3其他界面操作功能的實現381 
12.5.4柱狀圖382 
12.5.5堆疊柱狀圖387 
12.5.6百分比柱狀圖388 
12.5.7餅圖390 
12.6蠟燭圖和日期時間坐標軸392 
12.6.1功能概述392 
12.6.2界面和圖表初始化394 
12.6.3繪圖功能的實現395 
12.7區域填充圖399 
12.7.1功能概述399 
12.7.2界面和圖表初始化400 
12.7.3繪圖功能的實現402 
12.8極坐標圖405 
12.8.1功能概述405 
12.8. 2繪製極坐標圖406 
12.8.3其他功能的實現408 

第13章PyQtDataVisualization三維繪圖411 
13.1 PyQtDataVisualization模塊概述411 
13.1.1模塊安裝與導入411 
13.1.2模塊中主要的類411 
13.2三維柱狀圖413
13.2.1功能概述413 
13.2.2窗體可視化設計413 
13.2.3初始化創建三維柱狀圖414 
13.2.4其他功能的實現417 
13.3三維散點圖424 
13.3.1功能概述424 
13.3.2創建三維散點圖425 
13.3.3散點數據管理427 
13.4三維曲面圖429 
13.4.1功能概述429 
13.4.2三維曲面圖429 
13.4.3三維地形圖434 

第14章Matplotlib數據可視化437 
14.1 Matplotlib的基本用法437 
14.1. 1 Matplotlib的安裝437 
14.1.2一個腳本化的繪圖程序438 
14.1.3 GUI程序中的Matplotlib繪圖439 
14.2圖的主要元素的面向對像操作443 
14.2.1圖的主要組成元素443 
14.2.2示例程序功能和窗體可視化設計445 
14.2.3界面創建與初始化繪圖446 
14.2.4 Figure對象的操作450 
14.2.5 Axes子圖的操作453 
14.2.6曲線設置456 
14.2.7 x軸和y軸設置458 
14.3交互操作464
14.3.1交互功能概述464 
14.3.2界面構造與初始化繪圖466 
14.3.3界面其他功能的實現469 
14.3.4交互事件的處理469 
14.4典型二維圖的繪製471 
14.4.1自定義繪圖組件類QmyFigureCanvas 471 
14.4.2 QmyFigureCanvas類的使用473 
14.4.3直方圖475 
14.4.4填充圖476 
14.4.5餅圖477 
14.4.6火柴桿圖478 
14.4.7極坐標圖480 
14.5三維數據繪圖482 
14.5.1三維數據繪圖概述482 
14.5.2窗體初始化483 
14.5.3繪製三維圖486 
14.5.4三維數據繪製二維圖487 
14.5.5 colormap 488