Chapter 01 認識 PyQt5
1.1 PyQt 框架簡介
1.1.1 PyQt5 的特點
1.1.2 Qt 與PyQt 的關係
1.1.3 其他圖形介面開發程式庫介紹
1.1.4 PyQt4/PyQt5
1.1.5 Python 2/Python 3
1.2 PyQt5 環境建置
1.2.1 在 Windows 下建置 PyQt5 環境
1.2.2 PyQt5 的安裝測試
1.2.3 安裝其他 Python 模組
1.2.4 使用 PyQt5 的 API 文件
1.3 Eric 6 的安裝與使用
1.3.1 Eric 6 的安裝及中文化
1.3.2 Eric 6 的相關設定
1.3.3 安裝自動補全插件 jedi
1.3.4 測試 Eric 6
1.3.5 Eric 6 的基本使用
1.4 本書程式下載
Chapter 02 Python基本語法
2.1 Python 簡介
2.2 資料類型
案例2-1 基本運算
2.3 String(字串)
案例 2-2 字串入門
案例 2-3 字串常用方法
2.4 List(列表)
案例 2-4 列表操作
2.5 Tuple(元組)
案例 2-5 元組操作
2.6 Dictionary(字典)
案例 2-6 字典操作
2.7 資料類型轉換
2.8 控制語句
案例 2-7 控制語句
2.9 自訂函數
案例 2-8 函數定義
2.10 函數 partial
案例 2-9 partial 函數的使用
2.11 lambda 運算式
案例 2-10 lambda 運算式操作
2.12 類別和實例
案例 2-11 類別和實例的使用
案例 2-12 類別的屬性和方法的使用
案例 2-13 類別的動態屬性操作
2.13 類別的屬性和方法
2.14 類別的動態屬性
Chapter 03 Qt Designer的使用
3.1 Qt Designer 快速入門
3.1.1 建立主視窗
3.1.2 視窗主要區域介紹
3.1.3 查看 UI 檔案
3.1.4 將 .ui 檔轉換為 .py 檔案
3.1.5 分離介面與邏輯
3.2 佈局管理入門
3.2.1 使用佈局管理器佈局
3.2.2 使用容器進行佈局
3.3 Qt Designer 實戰應用
3.3.1 絕對佈局
3.3.2 使用佈局管理器佈局
3.3.3 其他需要注意的內容
3.3.4 測試程式
3.4 訊號和槽關聯
3.4.1 簡單入門
3.4.2 快速進階
3.5 功能表與工具列
3.5.1 介面設計
3.5.2 效果測試
3.5.3 應用:載入其他視窗
3.6 打包資源檔
3.6.1 使用 Qt Designer 載入資源檔
3.6.2 在表單中使用資源檔
3.6.3 轉換資源檔
3.6.4 匯入 .py 資源檔
Chapter 04 PyQt5 基本視窗控制項
4.1 QMainWindow
4.1.1 視窗類型介紹
4.1.2 建立主視窗
案例4-1 建立主視窗
4.1.3 將主視窗放在螢幕中間
案例4-2 主視窗置中顯示
4.1.4 關閉主視窗
案例4-3 關閉主視窗
4.2 QWidget
4.2.1 視窗坐標系統
4.2.2 常用的幾何結構
案例4-4 螢幕坐標系統顯示
4.2.3 建立第一個 PyQt5 應用程式
案例4-5 建立一個主視窗
4.2.4 為應用程式設定圖示
案例4-6 設定程式圖示
4.2.5 顯示氣泡提示訊息
4.3 QLabel
案例4-7 顯示 QLabel
案例4-8 使用 QLabel
4.4 文字方塊類控制項
4.4.1 QLineEdit
案例4-9 EchoMode 的顯示效果
案例4-10 驗證器
案例4-11 輸入遮罩
案例4-12 綜合範例
4.4.2 QTextEdit
案例4-13 QTextEdit 的使用
4.5 按鈕類控制項
4.5.1 QAbstractButton
4.5.2 QPushButton
案例4-14 QPushButton 按鈕的使用
4.5.3 QRadioButton
案例4-15 QRadioButton 按鈕的使用
4.5.4 QCheckBox
案例4-16 QCheckBox 按鈕的使用
4.6 QComboBox(下拉式清單方塊)
案例4-17 QComboBox 按鈕的使用
4.7 QSpinBox(計數器)
案例4-18 QSpinBox 的使用
4.8 QSlider(滑動條)
案例4-19 QSlider 的使用
4.9 對話方塊類控制項
4.9.1 QDialog
案例4-20 QDialog 的使用
4.9.2 QMessageBox
案例4-21 QMessageBox 的使用
4.9.3 QInputDialog
案例4-22 QInputDialog 的使用
4.9.4 QFontDialog
案例4-23 QFontDialog 的使用
4.9.5 QFileDialog
案例4-24 QFileDialog 的使用
4.10 視窗繪圖類控制項
4.10.1 QPainter
案例4-25 繪製文字
案例4-26 繪製點
4.10.2 QPen
案例4-27 QPen 的使用
4.10.3 QBrush
案例4-28 QBrush 的使用
4.10.4 QPixmap
案例4-29 QPixmap 的使用
4.11 拖曳與剪貼簿
4.11.1 Drag 與Drop
案例4-30 拖曳功能
4.11.2 QClipboard
案例4-31 QClipboard 的使用
4.12 日曆與時間
4.12.1 QCalendar
案例4-32 QCalendar 的使用
4.12.2 QDateTimeEdit
案例4-33 QDateTimeEdit 的使用
4.13 功能表、工具列與狀態列
4.13.1 功能表
案例4-34 QMenuBar 的使用
4.13.2 QToolBar
案例4-35 QToolBar 的使用
4.13.3 QStatusBar
案例4-36 QStatusBar 的使用
4.14 QPrinter
案例4-37 QPrinter 的使用
Chapter 05 PyQt5 進階介面控制項
5.1 表格與樹
5.1.1 QTableView
案例5-1 QTableView 的使用
5.1.2 QListView
案例5-2 QListView 的使用
5.1.3 QListWidget
案例5-3 QListWidget 的使用
5.1.4 QTableWidget
5.1.5 QTreeView
5.2 容器:承載更多的控制項
5.2.1 QTabWidget
案例5-4 QTabWidget 的使用
5.2.2 QStackedWidget
案例5-5 QStackedWidget 的使用
5.2.3 QDockWidget
案例5-6 QDockWidget 的使用
5.2.4 多文件介面
案例5-7 多文件介面
5.2.5 QScrollBar
案例5-8 QScrollBar
5.3 多執行緒
5.3.1 QTimer
5.3.2 Q_read
案例5-9 應用案例:分離UI主執行緒與工作執行緒
5.3.3 事件處理
5.4 網頁互動
案例5-10 載入並顯示外部的Web頁面
案例5-11 載入並顯示本地的Web頁面
案例5-12 載入並顯示嵌入的HTML標記
案例5-13 PyQt 呼叫JavaScript 腳本
案例5-14 JavaScript 呼叫PyQt 程式碼
Chapter 06 PyQt5 佈局管理
6.1 好軟體的三個維度
6.2 PyQt5 的佈局管理
6.3 PyQt5 的絕對位置佈局
6.4 QBoxLayout(框佈局)
6.4.1 QHBoxLayout(水平佈局)
6.4.2 QVBoxLayout(垂直佈局)
6.4.3 addStretch() 函數的使用
6.5 QGridLayout(格子佈局)
6.5.1 單一儲存格
6.5.2 跨越行和列的儲存格
6.6 QFormLayout(表單佈局)
6.7 巢狀佈局
6.7.1 在佈局中加入其他佈局
6.7.2 在控制項中增加佈局
6.8 QSplitter
Chapter 07 PyQt5 訊號與槽
7.1 訊號與槽介紹
7.1.1 定義訊號
7.1.2 操作訊號
7.1.3 訊號與槽的入門應用
7.1.4 快速進階
7.2 訊號與槽再細分
7.2.1 內建訊號和槽函數
7.2.2 內建訊號和自訂槽函數
7.2.3 自訂訊號和內建槽函數
7.2.4 自訂訊號和槽函數
7.3 訊號與槽的進階用法
7.3.1 進階自訂訊號與槽
7.3.2 使用自訂參數
7.3.3 裝飾器訊號與槽
7.3.4 斷開和連接訊號與槽
7.3.5 Qt Designer 神助攻:介面顯示與商業邏輯的分離
7.3.6 多執行緒中使用訊號與槽
7.4 事件處理機制入門
7.4.1 事件和訊號與槽的區別
7.4.2 常見的事件類型
7.4.3 使用事件處理的方法
7.4.4 經典案例分析
7.5 傳遞視窗資料
7.5.1 傳遞單一視窗資料
7.5.2 傳遞多視窗資料:調用屬性
7.5.3 傳遞多視窗資料:訊號與槽
Chapter 08 PyQt5 圖形和特效
8.1 視窗樣式
8.1.1 設定視窗樣式 1
案例8-1 設定視窗樣式
8.1.2 設定視窗樣式 2
8.1.3 使用自訂的無邊框視窗
8.2 繪圖
8.2.1 圖形類別
8.2.2 簡單繪圖
8.2.3 雙緩衝繪圖
案例8-2 繪製矩形,出現重影
案例8-3 使用雙緩衝技術繪製矩形,避免出現重影
8.3 QSS 的 UI 美化
8.3.1 QSS 的語法規則
8.3.2 QSS 選擇器類型
8.3.3 QSS 子控制項
8.3.4 QSS 偽狀態
8.3.5 QDarkStyleSheet
8.4 設定視窗背景
8.4.1 以QSS設定視窗背景
8.4.2 以 QPalette 設定視窗背景
8.4.3 以 paintEvent 設定視窗背景
8.5 不規則視窗的顯示
8.5.1 不規則視窗實現動畫效果
8.5.2 載入 GIF 動畫效果
8.6 設定樣式
8.6.1 為標籤加上背景圖片
8.6.2 為按鈕加上背景圖片
8.6.3 縮放圖片
8.6.4 設定視窗透明
8.6.5 載入 QSS
Chapter 09 PyQt5 擴充應用
9.1 以 PyInstaller 封裝專案為 EXE 檔
9.2 資料庫處理
9.2.1 SQLite 介紹
9.2.2 連接資料庫
9.2.3 執行 SQL 語句
9.2.4 資料庫模型視圖
9.2.5 封裝分頁查詢控制項
9.3 Pandas 在 PyQt 的應用
9.3.1 qtpandas 的安裝
9.3.2 官方範例解讀
9.3.3 設定提升的視窗控制項
9.3.4 qtpandas 的使用
9.4 Matplotlib 在 PyQt 的應用
9.4.1 解讀 MatplotlibWidget
9.4.2 設定提升的視窗控制項
9.4.3 MatplotlibWidget 的使用
9.4.4 更多擴充功能
9.5 PyQtGraph 在 PyQt 的應用
9.5.1 安裝 PyQtGraph
9.5.2 官方範例解讀
9.5.3 設定提升的視窗控制項
9.5.4 PyQtGraph 的使用
9.5.5 更多擴充功能
9.6 Plotly 在 PyQt 中的應用
9.6.1 Plotly 的安裝
9.6.2 範例解讀
9.6.3 設定提升的視窗控制項
9.6.4 Plotly_PyQt5 的使用
9.6.5 更多擴充功能
9.6.6 Plotly 與 PyQt5.6 的結合
9.6.7 更多擴充功能
9.7 UI層的自動化測試
9.7.1 手工測試與自動化測試
9.7.2 模擬雞尾酒的調酒器視窗
9.7.3 將介面檔轉換為 Python 檔
9.7.4 單元測試程式
9.7.5 執行測試用例
9.7.6 產生測試報告
Chapter 10 PyQt5 實戰一:經典程式開發
10.1 取得城市天氣預報
10.1.1 抓取天氣資料
10.1.2 抓取不同城市的天氣預報 API
10.1.3 設計介面
10.1.4 將介面檔轉換為 .py 檔案
10.1.5 呼叫主視窗類別
10.2 複利計算
10.2.1 複利計算業務
10.2.2 設計介面
10.3 刷新網站點擊量
Chapter 11 PyQt5 實戰二:金融領域應用
11.1 控制項級別的佈局管理
11.2 視窗級別的佈局管理
11.3 PyQt5 在私募基金公司中的應用
11.3.1 顯示產品基本資料
11.3.2 展示產品組合資訊
11.4 PyQt5 在量化投資的應用
11.5 PyQt5 在券商中的應用
11.5.1 從爬蟲說起
11.5.2 程式解讀
參考文獻