大數據資料可視化:Python QT GUI程式設計 DM2006
大數據資料可視化:Python QT GUI程式設計 DM2006
資料來源: https://deepwisdom.com.tw/product/%e5%a4%a7%e6%95%b8%e6%93%9a%e8%b3%87%e6%96%99%e5%8f%af%e8%a6%96%e5%8c%96%ef%bc%9apython-qt-gui%e7%a8%8b%e5%bc%8f%e8%a8%ad%e8%a8%88-dm2006-2/
GITHUB: https://github.com/jash-git/deepwisdom_DM2006
描述
什麼是回頭書?
新書出版時,在運送或上市過程中可能有汙損、折痕、被蓋章或被貼上貼紙,但這些並不影響書中本身豐富的內容。
“回頭書”是指消費者用更低的價格來獲取與原價相同的閱讀價值,如不在意外觀折損、瑕疵,回頭書即是另一種使用低預算購買好書的省錢方式。
回頭書售價
每本售價200元,不限品項
物流處理費NT 70元
消費金額滿500元即可享有免運費
付款方式
2)銀行匯款
永豐銀行(銀行代號:807)
戶名:深智數位股份有限公司
帳號:157-018-0003397-1
如有匯款請於訂單上備註轉帳之銀行帳號後五碼。
>>購買注意事項<<
購買前請先確認可否接受書籍含有瑕疵,下單即表示消費者同意。
商品售出後不受理退貨。
商品庫存若顯示為0,即表示無庫存,如有取消訂單,庫存量將會更新重新計算。
本活動僅限於台灣、澎湖、金門、馬祖等地區,不適用於海外。
內容簡介
人工智慧,大數據操作的後端,需要一個讓使用者能操作的前端介面。應用程式前端介面的選擇,除了Web、App、命令列之外,還有已存在30年的視窗程式。在大型專案開發中,雖然網頁已成為主流,但許多場合,還是有視窗程式的需求。
開發視窗程式首選當然是Visual Studio,但必須熟悉C++/C#。如果讀者已經熟悉了Python,又想開發視窗程式,Qt將會是最好的選擇。讀者只要會Python就可以了。
Qt C++ 類別庫是一套廣泛使用的跨平台GUI 設計類別庫,PyQt5 是Qt5 C++類別庫的Python 綁定,使用PyQt5 在Python 裡程式設計,可以將Python 豐富的科學計算、圖形顯示等功能與PyQt5 的GUI 設計功能結合起來,開發出比較專業的Python GUI 應用程式,便於對研究成果進行有效的整合與展示。
本書介紹在Python 中使用PyQt5、PyQtChart、Matplotlib 等進行GUI 應用程式設計和資料視覺化程式設計的方法,用最真實範例的方式,讓讀者熟悉Qt的開發方式,並且掌控所有視窗的元件,全書內容分為三部分。包括:
►完整Python、Qt開發環境的安裝
► PyQt5程式設計架構
►常用視窗元件使用,MV架構、GUI的增強設計
►滑鼠鍵盤等事件的處理、對話方塊及多視窗的應用
►資料庫的使用,使用了SQLITE
►PyQt5上的檔案操作、繪圖元件
►PyQt5多媒體的操作,包括音樂及視訊
►PyQtChart的圖表製作、PyQtDataVisualization的使用
►最強大的人工智慧統計繪圖套件Matplotlib的使用
本書特色
◎ 使用PyQt5 進行GUI 應用程式設計
◎ 使用PyQtChart、PyQtDataVisualization 和Matplotlib 在GUI 程式的視窗介面上嵌入資料視覺化功能。
適合讀者群:具Python程式設計基礎、想透過Python設計GUI應用程式,
或在GUI應用程式中實現資料視覺化的讀者。
前言
Python 作為一個開放原始碼的直譯型程式設計軟體,在教學、科學研究、實際專案中用得越來越多。Python 易學好用,程式資源豐富,在程式設計解決一些科學計算問題時比較實用,但是Python 附帶的Tkinter 套件設計GUI 程式的功能比較弱,無法設計專業的GUI 應用程式。
Qt C++ 類別庫是一套廣泛使用的跨平台GUI 設計類別庫,PyQt5 是Qt5 C++類別庫的Python 綁定,使用PyQt5 在Python 裡程式設計,可以將Python 豐富的科學計算、圖形顯示等功能與PyQt5 的GUI 設計功能結合起來,開發出比較專業的Python GUI 應用程式,便於對研究成果進行有效的整合與展示。
目前,介紹Python 程式設計的書很多,但是專門介紹PyQt5 GUI 程式設計的書很少。本書介紹兩個主題:一個是使用PyQt5 進行GUI 應用程式設計,另一個是使用PyQtChart、PyQtDataVisualization 和Matplotlib 在GUI 程式的視窗介面上嵌入資料視覺化功能。這兩個主題都是非常實用的,可以將研究成果整合為一個GUI 應用程式,進行互動式操作和結果展示。
本書內容
本書介紹在Python 中使用PyQt5、PyQtChart、Matplotlib 等進行GUI 應用程式設計和資料視覺化程式設計的方法,全書的內容分為三部分。
第一部分是PyQt5 開發基礎,包含第1 章和第2 章。
第1 章介紹Python、Qt、PyQt5 的特點和安裝方法,在Windows 中建立開發環境。
第2 章介紹使用PyQt5 開發GUI 應用程式的基本架構原理,包含GUI 應用程式的基本結構、使用視覺化設計UI 表單時開發GUI 程式的流程和架構、訊號與槽的使用方法等。掌握了第2 章的內容就掌握了PyQt5 開發GUI 應用程式的架構性原理,再學習第二部分和第三部分就很容易了。
第二部分是GUI 應用程式設計,從第3 章至第11 章。
這部分介紹GUI 應用程式設計中常用的一些功能模組的程式設計使用方法,包含常用介面元件的使用、Model/View 結構、事件處理、對話方塊和多視窗設計、資料庫、繪圖、檔案讀寫和操作、多媒體、多語言介面和Qt 樣式表訂製介面等。
這部分的內容根據PyQt5 和Python 各自的特點做了取捨,整體的原則就是對GUI 程式設計中必需的,而Python 中沒有或功能不強的模組介紹。舉例來說,Python 雖然有附帶的資料庫、多媒體、檔案讀寫功能模組,但是功能不如PyQt5 的對應模組,或不易與PyQt5 的GUI 程式的視窗介面結合使用,因此本書就介紹PyQt5 的資料庫、多媒體、檔案讀寫功能模組。而Python 附帶的多執行緒程式設計功能已經比較全,且不涉及使用者介面,因此本書就不介紹PyQt5 的多執行緒程式設計功能。Python 有很多功能強大的協力廠商網路功能模組,因此沒有必要介紹PyQt5 的網路程式設計功能。
第三部分是資料視覺化程式設計,從第12 章至第14 章。
Chart 和Data Visualization 模組是Qt C++ 類別庫的一部分, 分別用於二維圖表繪製和3D 資料視覺化,但是PyQt5 中沒有這兩個模組,需要單獨安裝PyQtChart 套件和PyQtDataVisualization 套件。第 12 章介紹使用PyQtChart 模組繪製各種二維圖表的程式設計方法,第13 章介紹使用PyQtDataVisualization模組繪製3D 柱狀圖、3D 散點圖和立體曲面圖的程式設計方法。
Matplotlib 是Python 中應用最廣泛的資料視覺化模組,但是一般介紹Matplotlib 資料視覺化的書很少詳細介紹將Matplotlib 嵌入GUI 視窗上的程式設計方法。第14 章專門介紹Matplotlib 與PyQt5 結合,嵌入GUI 程式中實現資料視覺化的程式設計方法,這是在撰寫整合化的Python GUI 應用程式時經常遇到的,是非常實用的功能。
本書學習路線
本書使用的程式語言是Python,但是本書並不會介紹Python 語言基礎,需要讀者對Python 程式設計有一定的了解,特別是對Python 的物件導向程式設計原理要比較熟悉。如果讀者對Python 不夠熟悉,需要參考專門介紹Python 程式設計基礎的書,學會Python 後再來學習本書。
本書的內容雖然用到Qt 的IDE,即Qt Creator,但是並不需要撰寫任何C++語言程式,所以讀者無須具有C++ 語言基礎。當然,如果讀者有C++ 語言基礎,或對Qt C++ 程式設計比較熟悉,對閱讀本書的內容是非常有幫助的。
學習本書應從第一部分開始。第1 章介紹本書用到的各個軟體及其安裝,架設開發環境。第2 章是本書的基礎和重點內容,介紹了PyQt5 GUI 應用程式的基本程式架構、以UI 表單視覺化設計為基礎的GUI 應用程式的設計流程和工具軟體pyuic5 的使用、UI 與表單業務邏輯分離設計的原理、Qt 的核心技術訊號與槽的使用方法、Qt Creator 中管理和使用資源檔,以及透過工具軟體pyrcc5將資源檔轉為Python 程式的方法。第2 章還建立了3 個單視窗專案範本,本書的大部分範例都是以這幾個專案範本建立為基礎的。
掌握第2 章的內容就掌握了用PyQt5 設計GUI 程式的技術架構,剩下的就是PyQt5 中用於GUI 應用程式設計的各種類的使用了。
第二部分介紹PyQt5 GUI 程式設計中各個技術模組的使用方法,包含常用介面元件、Model/View 結構、事件處理、對話方塊與多視窗設計、資料庫、繪圖、檔案、多媒體等,讀者可以根據自己的需要學習或查閱對應章節。第11章有兩個新的技術點不在第2 章介紹的技術架構內,分別是多語言介面設計方法和Qt 樣式表訂製介面方法。
第三部分介紹資料視覺化設計方法。PyQtChart 和PyQtDataVisualization 是QtC++ 類別庫對應模組的Python 綁定,分別用於二維圖表和3D 資料視覺化設計,其內容的介紹比較全面。另外由於Matplotlib 在Python 資料視覺化中應用廣泛,第14 章專門介紹將Matplotlib 嵌入GUI 表單上實現互動式資料視覺化的設計方法,包含主要的技術點和一些常用二維圖和3D 圖的程式設計使用方法。
PyQtChart、PyQtDataVisualization 與Matplotlib 的某些功能是重合的,但它們各有千秋,讀者可根據自己的需要和熟悉的內容選擇學習和使用。如果讀者熟悉Qt C++ 類別庫中的二維圖表和3D 資料視覺化模組的使用,就參閱第12 章和第13 章;如果讀者熟悉Matplotlib 的使用,就參閱第14 章。
範例來源程式
本書的範例程式都是在64 位元Windows 7 系統裡開發和測試的。在開始撰寫本書時使用的是Qt 5.11 和PyQt 5.11,完成本書初稿時已經發佈了Qt 5.12 和PyQt 5.12,由於Qt 5.12 是一個LTS(Long Term Supported)版本,於是又用Qt 5.12 和PyQt 5.12 對全書內容和程式進行了檢查、修改和測試。
本書使用的各個軟體或Python 套件的版本分別是Python 3.7.0、Qt 5.12.0、PyQt 5.12、PyQtChart 5.12、PyQtDataVisualization 5.12、Matplotlib 3.0.0。
讀者在拿到本書進行閱讀和學習時,這些軟體一定已經有更新的發佈版本了。讀者在建置開發環境時使用最新的軟體版本即可,不必與本書使用的軟體版本完全一致,因為這些軟體在大的版本序列裡基本上是向下相容的。
本書提供所有範例來源程式的下載,讀者可到本公司官網搜索到本書後,根據提示(請輸入DM2006)下載本書的範例程式資源。本書提供兩套範例來源程式,使用目的不同。
一套是具有全部原始程式的程式,包含Qt 專案、UI 表單、Python 程式等,其中Python 主程式可以直接執行,顯示範例執行結果。讀者可以使用這套來源程式測試和檢視範例執行結果,並檢視已設計好的UI 表單和Python 程式檔案。
另外一套是只有UI 表單的不完整程式,包含Qt 專案、UI 表單、Python 程式架構,其中的Python 程式檔案只有基本架構,沒有功能實現程式。這套程式是為了便於讀者使用已經設計好的UI 表單,根據書上介紹的內容和過程,在Python 程式架構裡自己撰寫程式,逐步實現功能。之所以保留UI 表單,是因為UI 表單的視覺化設計是個比較耗時間的過程,讀者如果自己從頭開始設計UI 表單,難以保障所有元件的名稱和屬性與範例的一致,在Python 程式設計實現業務功能時容易出現問題。
作者一貫認為UI 表單的視覺化設計不是學習程式設計的重點,表單介面的建立能用視覺化設計解決的就不要用程式。一般情況下,做過幾個範例後很快就可以掌握UI 表單視覺化設計的方法,所以,學習程式設計的重點是各種介面元件和功能類別的介面函數、訊號的靈活使用,以實現程式的業務邏輯功能。
本書約定
本書撰寫和執行Python 程式使用Python 3.7 附帶的軟體IDLE,對於Python 程式有以下的約定。
Tab 縮排使用3 個空格。因為Python 來源程式是採用縮排確定程式碼片段的,排版時為減少縮排空格數,本書設定Tab 為3 個空格。
程式碼片段的縮排只用相對縮排。在文中一個程式碼片段內的程式使用相對縮排,而非整個程式檔案內的縮排。
關於作者
王維波 博士,大學教師
從事測控技術與儀器專業相關工作,主要研究地球物理探測儀器開發、監測資料處理方法和軟體發展。
栗寶鵑 博士,科研人員
主要從事地球物理、水下探測、遙感等專業方向的資料處理和圖像識別方面的研究工作,在日常工作中常使用Qt和Python解決實際問題。
張曉東 博士,大學教師
從事自動化相關的教學工作,研究方向主要是優化演算法、最優控制和智慧控制。具有豐富的程式設計經驗,善於透過Qt C 和Python的結合提高演算法效率。
目錄
前言
第一篇 PyQt5 開發基礎
01 | 開發環境安裝
1.1 Python
1.2 Qt
1.3 PyQt5
| 02 | PyQt5 GUI 程式架構
2.1 PyQt5 GUI 程式的基本架構
2.2 使用視覺化設計表單的GUI程式
2.3 訊號與槽的使用
2.4 自訂訊號的使用
2.5 資源檔的使用
2.6 從Qt C++ 類別庫到PyQt5
2.7 3個單表單GUI 專案範本
第二篇 GUI 應用程式設計
| 03 | 常用介面元件的使用
3.1 資料登錄輸出
3.2 QPushButton
3.3 QSlider 和QProgressBar
3.4 日期時間資料
3.5 計時器QTimer
3.6 下拉式選單QComboBox
3.7 QMainWindow 與QAction
3.8 QListWidget 和QToolButton
3.9 QTreeWidget 和QDockWidget
3.10 QTableWidget
3.11 容器類別元件與版面配置設計
| 04 | Model/View 結構
4.1 Model/View 結構
4.2 QFileSystemModel
4.3 QStringListModel
4.4 QStandardItemModel
4.5 自訂代理
| 05 | 事件處理
5.1 預設事件處理
5.2 事件攔截與事件過濾
5.3 拖放事件與拖放操作
5.4 具有拖放操作功能的元件
| 06 | 對話方塊與多視窗設計
6.1 標準對話方塊
6.2 自訂對話方塊及其使用
6.3 多視窗應用程式
6.4 MDI 應用程式設計
| 07 | 資料庫
7.1 Qt SQL 模組概述
7.2 QSqlTableModel 的使用
7.3 QSqlQueryModel 的使用
7.4 QSqlQuery 的使用
7.5 QSqlRelationalTableModel 的使用
| 08 | 繪圖
8.1 QPainter 繪圖
8.2 座標系統和座標轉換
8.3 自訂介面元件
8.4 Graphics View 繪圖架構
| 09 | 檔案
9.1 檔案操作相關類別概述
9.2 文字檔讀寫
9.3 二進位檔案讀寫
9.4 目錄和檔案操作
| 10 | 多媒體
10.1 PyQt5 多媒體模組功能概述
10.2 音訊播放
10.3 音訊輸入
10.4 視訊播放
10.5 攝影機的使用
| 11 | GUI 設計增強技術
11.1 多語言介面
11.2 QSS 訂製介面
第三篇 資料視覺化
| 12 | PyQtChart 二維繪圖
12.1 PyQtChart 概述
12.2 QChart 繪製聚合線圖
12.3 QChart 繪圖進階功能
12.4 對數座標軸和多座標軸
12.5 圓形圖和各種柱狀圖
12.6 蠟燭圖和日期時間座標軸
12.7 區域填滿圖
12.8 極座標圖
| 13 | PyQtDataVisualization 3D 繪圖
13.1 PyQtDataVisualization 模組概述
13.2 3D 柱狀圖
13.3 3D 散點圖
13.4 立體曲面圖
| 14 | Matplotlib 資料視覺化
14.1 Matplotlib 的基本用法
14.2 圖的主要元素的物件導向操作
14.3 互動操作
14.4 典型二維圖的繪製
14.5 3D 資料繪圖