特價 -20%

大數據資料可視化:Python QT GUI程式設計 DM2006

NT$704

出版商 深智數位股份有限公司
出版日期 2020-2-20
語言 繁體中文
頁數 880
ISBN 9789865501150
Add to Wishlist
貨號: LV3229-1-3-1-1-1-1-2-1-2-1-2-1-2-1-1-1 Category:

描述

內容簡介

人工智慧,大數據操作的後端,需要一個讓使用者能操作的前端介面。應用程式前端介面的選擇,除了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 資料繪圖

額外資訊

出版商

深智數位股份有限公司

出版日期

2020-2-20

語言

繁體中文

頁數

768

ISBN

9789865501150