PyQt5快速開發與實戰

PyQt5快速開發與實戰

《PyQt5快速開發與實戰》 一書作者王碩、孫洋洋,電子工業出版社2017年10月出版。

內容簡介

本書既是介紹PyQt5的快速入門書籍,也是介紹PyQt5實戰套用的書籍。PyQt5是對Qt所有類的Python封裝,即可以利用Qt的強大功能,也可以利用Python豐富的生態,同時能夠結合Python簡潔的語法進行操作,其結果就是使用PyQt5可以高效簡單地開發出自己想要的程式。本書內容豐富,對PyQt5基礎知識的介紹比較全面,同時對新手使用PyQt5的一些重點難點都有專門的章節進行針對性分析,還重點介紹了如何把Python的一些重量級模組(Pandas、Matplotlib和Plotly)嵌入到PyQt5中,從而極大地節約開發時間。最後,本書會給出一些綜合性較強的實戰案例,幫助讀者快速掌握PyQt5的實戰套用。總而言之,本書旨在幫助讀者以最短的時間掌握PyQt5的基礎知識並能夠實戰套用,希望本書對有Python程式開發需求的讀者有幫助。

目錄

第1章 認識PyQt 5 1

1.1 PyQt框架簡介 1

1.1.1 PyQt 5的特點 3

1.1.2 Qt與PyQt的關係 4

1.1.3 其他圖形界面開發庫介紹 4

1.1.4 PyQt 4/PyQt 5 6

1.1.5 Python 2/Python 3 6

1.2 PyQt 5環境搭建 7

1.2.1 在Windows下搭建PyQt 5環境 7

1.2.2 在Mac OS下搭建PyQt 5環境 15

1.2.3 PyQt 5的安裝測試 20

1.2.4 安裝其他Python模組 22

1.2.5 使用PyQt 5的API文檔 23

1.3 Eric 6的安裝與使用 25

1.3.1 Eric 6的安裝及漢化 26

1.3.2 Eric 6的相關配置 29

1.3.3 安裝自動補全外掛程式jedi 33

1.3.4 測試Eric 6 35

1.3.5 Eric 6的基本使用 35

1.4 本書程式下載 39

第2章 Python基本語法 41

2.1 Python簡介 41

2.2 數據類型 43

案例2-1 基本運算 43

2.3 String(字元串) 45

案例2-2 字元串入門 45

案例2-3 字元串常用方法 46

2.4 List(列表) 47

案例2-4 列表操作 48

2.5 Tuple(元組) 49

案例2-5 元組操作 49

2.6 Dictionary(字典) 50

案例2-6 字典操作 50

2.7 數據類型轉換 52

2.8 控制語句 53

案例2-7 控制語句 53

2.9 自定義函式 54

案例2-8 函式定義 55

2.10 函式partial 55

案例2-9 partial函式的使用 56

2.11 lambda表達式 57

案例2-10 lambda表達式操作 57

2.12 類和實例 58

案例2-11 類和實例的使用 58

2.13 類的屬性和方法 59

案例2-12 類的屬性和方法的使用 59

2.14 類的動態屬性 61

案例2-13 類的動態屬性操作 61

第3章 Qt Designer的使用 64

3.1 Qt Designer快速入門 64

3.1.1 新建主視窗 65

3.1.2 視窗主要區域介紹 66

3.1.3 查看UI檔案 68

3.1.4 將.ui檔案轉換為.py檔案 70

3.1.5 界面與邏輯分離 74

3.2 布局管理入門 75

3.2.1 使用布局管理器布局 76

3.2.2 使用容器進行布局 79

3.3 Qt Designer 實戰套用 81

3.3.1 絕對布局 81

3.3.2 使用布局管理器布局 83

3.3.3 其他需要注意的內容 91

3.3.4 測試程式 94

3.4 信號和槽關聯 96

3.4.1 簡單入門 97

3.4.2 快速進階 101

3.5 選單欄與工具列 106

3.5.1 界面設計 106

3.5.2 效果測試 110

3.5.3 套用:載入其他視窗 112

3.6 打包資源檔案 115

3.6.1 使用Qt Designer載入資源檔案 115

3.6.2 在窗體中使用資源檔案 116

3.6.3 轉換資源檔案 118

3.6.4 導入.py資源檔案 119

第4章 PyQt 5基本視窗控制項 122

4.1 QMainWindow 122

4.1.1 視窗類型介紹 122

4.1.2 創建主視窗 123

案例4-1 創建主視窗 124

4.1.3 將主視窗放在螢幕中間 125

案例4-2 主視窗居中顯示 125

4.1.4 關閉主視窗 127

案例4-3 關閉主視窗 127

4.2 QWidget 128

4.2.1 視窗坐標系統 129

4.2.2 常用的幾何機構 130

案例4-4 螢幕坐標系統顯示 131

4.2.3 創建第一個PyQt 5套用 133

案例4-5 建立一個主視窗 133

4.2.4 為套用設定程式圖示 136

案例4-6 設定程式圖示 136

4.2.5 顯示氣泡提示信息 137

4.3 QLabel 138

案例4-7 顯示QLabel標籤 140

案例4-8 QLabel標籤快捷鍵的使用 142

4.4 文本框類控制項 143

4.4.1 QLineEdit 143

案例4-9 EchoMode的顯示效果 146

案例4-10 驗證器 147

案例4-11 輸入掩碼 149

案例4-12 綜合示例 150

4.4.2 QTextEdit 152

案例4-13 QTextEdit的使用 152

4.5 按鈕類控制項 154

4.5.1 QAbstractButton 154

4.5.2 QPushButton 154

案例4-14 QPushButton按鈕的使用 155

4.5.3 QRadioButton 158

案例4-15 QRadioButton按鈕的使用 158

4.5.4 QCheckBox 160

案例4-16 QCheckBox按鈕的使用 161

4.6 QComboBox(下拉列表框) 164

案例4-17 QComboBox按鈕的使用 164

4.7 QSpinBox(計數器) 166

案例4-18 QSpinBox的使用 167

4.8 QSlider(滑動條) 168

案例4-19 QSlider的使用 169

4.9 對話框類控制項 171

4.9.1 QDialog 171

案例4-20 QDialog的使用 171

4.9.2 QMessageBox 173

案例4-21 QMessageBox的使用 175

4.9.3 QInputDialog 176

案例4-22 QInputDialog的使用 176

4.9.4 QFontDialog 178

案例4-23 QFontDialog的使用 178

4.9.5 QFileDialog 180

案例4-24 QFileDialog的使用 181

4.10 視窗繪圖類控制項 184

4.10.1 QPainter 184

案例4-25 繪製文字 185

案例4-26 繪製點 187

4.10.2 QPen 189

案例4-27 QPen的使用 189

4.10.3 QBrush 191

案例4-28 QBrush 的使用 192

4.10.4 QPixmap 194

案例4-29 QPixmap的使用 194

4.11 拖曳與剪貼簿 195

4.11.1 Drag與Drop 195

案例4-30 拖曳功能 197

4.11.2 QClipboard 198

案例4-31 QClipboard的使用 199

4.12 日曆與時間 202

案例4-32 QCalendar的使用 202

案例4-33 QDateTimeEdit的使用 209

4.13 選單欄、工具列與狀態欄 212

4.13.1 選單欄 212

案例4-34 QMenuBar的使用 212

4.13.2 QToolBar 214

案例4-35 QToolBar的使用 215

4.13.3 QStatusBar 216

案例4-36 QStatusBar的使用 217

4.14 QPrinter 218

案例4-37 QPrinter的使用 218

第5章 PyQt 5高級界面控制項 221

5.1 表格與樹 221

5.1.1 QTableView 221

案例5-1 QTableView的使用 222

5.1.2 QListView 224

案例5-2 QListView的使用 225

5.1.3 QListWidget 226

案例5-3 QListWidget的使用 226

5.1.4 QTableWidget 227

5.1.5 QTreeView 245

5.2 容器:裝載更多的控制項 251

5.2.1 QTabWidget 251

案例5-4 QTabWidget的使用 252

5.2.2 QStackedWidget 254

案例5-5 QStackedWidget的使用 254

5.2.3 QDockWidget 256

案例5-6 QDockWidget的使用 257

5.2.4 多文檔界面 259

案例5-7 多重文檔界面 260

5.2.5 QScrollBar 262

案例5-8 QScrollBar 262

5.3 多執行緒 264

5.3.1 QTimer 264

5.3.2 QThread 268

案例5-9 套用案例:分離UI主執行緒與工作執行緒 274

5.3.3 事件處理 276

5.4 網頁互動 278

案例5-10 載入並顯示外部的Web頁面 278

案例5-11 載入並顯示本地的Web頁面 280

案例5-12 載入並顯示嵌入的HTML代碼 281

案例5-13 PyQt調用JavaScript代碼 283

案例5-14 JavaScript調用PyQt代碼 286

第6章 PyQt 5布局管理 294

6.1 好軟體的三個維度 294

6.2 PyQt 5中的布局管理 295

6.3 PyQt 5的絕對位置布局 296

6.4 QBoxLayout(框布局) 298

6.4.1 QHBoxLayout(水平布局) 298

6.4.2 QVBoxLayout(垂直布局) 300

6.4.3 addStretch()函式的使用 301

6.5 QGridLayout(格線布局) 303

6.5.1 單一的格線單元格 304

6.5.2 跨越行和列的格線單元格 306

6.6 QFormLayout(表單布局) 308

6.7 嵌套布局 309

6.7.1 在布局中添加其他布局 309

6.7.2 在控制項中添加布局 311

6.8 QSplitter 314

第7章 PyQt 5信號與槽 317

7.1 信號與槽介紹 317

7.1.1 定義信號 318

7.1.2 操作信號 319

7.1.3 信號與槽的入門套用 320

7.1.4 快速進階 324

7.2 信號與槽再細分 324

7.2.1 內置信號和槽函式 324

7.2.2 內置信號和自定義槽函式 325

7.2.3 自定義信號和內置槽函式 326

7.2.4 自定義信號和槽函式 327

7.3 信號與槽的高級玩法 328

7.3.1 高級自定義信號與槽 328

7.3.2 使用自定義參數 333

7.3.3 裝飾器信號與槽 335

7.3.4 信號與槽的斷開和連線 337

7.3.5 Qt Designer神助攻:界面顯示與業務邏輯的分離 339

7.3.6 多執行緒中信號與槽的使用 345

7.4 事件處理機制入門 348

7.4.1 事件和信號與槽的區別 348

7.4.2 常見事件類型 348

7.4.3 使用事件處理的方法 349

7.4.4 經典案例分析 349

7.5 視窗數據傳遞 362

7.5.1 單一視窗數據傳遞 363

7.5.2 多視窗數據傳遞:調用屬性 364

7.5.3 多視窗數據傳遞:信號與槽 368

第8章 PyQt 5圖形和特效 373

8.1 視窗風格 373

8.1.1 設定視窗風格 373

案例8-1 設定視窗風格 374

8.1.2 設定視窗樣式 375

8.1.3 使用自定義的無框線視窗 376

8.2 繪圖 378

8.2.1 圖像類 378

8.2.2 簡單繪圖 379

8.2.3 雙緩衝繪圖 381

案例8-2 繪製矩形,出現重影 382

案例8-3 使用雙緩衝技術繪製矩形,避免出現重影 384

8.3 QSS的UI美化 387

8.3.1 QSS的語法規則 387

8.3.2 QSS選擇器類型 389

8.3.3 QSS子控制項 390

8.3.4 QSS偽狀態 391

8.3.5 QDarkStyleSheet 392

8.4 設定視窗背景 395

8.4.1 使用QSS設定視窗背景 395

8.4.2 使用QPalette設定視窗背景 396

8.4.3 使用paintEvent設定視窗背景 398

8.5 不規則視窗的顯示 400

8.5.1 不規則視窗實現動畫效果 404

8.5.2 載入GIF動畫效果 406

8.6 設定樣式 407

8.6.1 為標籤添加背景圖片 407

8.6.2 為按鈕添加背景圖片 407

8.6.3 縮放圖片 409

8.6.4 設定視窗透明 409

8.6.5 載入QSS 410

第9章 PyQt 5擴展套用 412

9.1 使用PyInstaller打包項目生成EXE檔案 412

9.2 資料庫處理 417

9.2.1 SQLite介紹 417

9.2.2 連線資料庫 421

9.2.3 執行SQL語句 422

9.2.4 資料庫模型視圖 425

9.2.5 封裝分頁查詢控制項 428

9.3 Pandas在PyQt中的套用 435

9.3.1 qtpandas的安裝 435

9.3.2 官方示例解讀 436

9.3.3 設定提升的視窗控制項 440

9.3.4 qtpandas的使用 442

9.4 Matplotlib在PyQt中的套用 445

9.4.1 對MatplotlibWidget的解讀 445

9.4.2 設定提升的視窗控制項 448

9.4.3 MatplotlibWidget的使用 449

9.4.4 更多擴展 451

9.5 PyQtGraph在PyQt中的套用 451

9.5.1 PyQtGraph的安裝 452

9.5.2 官方示例解讀 452

9.5.3 設定提升的視窗控制項 453

9.5.4 PyQtGraph的使用 454

9.5.5 更多擴展 457

9.6 Plotly在PyQt中的套用 457

9.6.1 Plotly的安裝 458

9.6.2 示例解讀 458

9.6.3 設定提升的視窗控制項 460

9.6.4 Plotly_PyQt5的使用 461

9.6.5 更多擴展 464

9.6.6 Plotly與PyQt 5.6的結合 465

9.6.7 更多擴展 468

9.7 UI層的自動化測試 468

9.7.1 手工測試與自動化測試 469

9.7.2 模擬雞尾酒的調酒器視窗 470

9.7.2 將界面檔案轉換為Python檔案 473

9.7.3 單元測試程式 475

9.7.4 運行測試用例 485

9.7.5 生成測試報告 486

第10章 PyQt 5實戰一:經典程式開發 489

10.1 獲取城市天氣預報 489

10.1.1 獲取天氣數據 489

10.1.2 獲取不同城市的天氣預報API 490

10.1.3 界面實現 492

10.1.4 將界面檔案轉換為.py檔案 493

10.1.5 調用主視窗類 495

10.2 複利計算 496

10.2.1 複利計算業務 496

10.2.2 界面實現 497

10.3 刷新部落格點擊量 499

第11章 PyQt 5實戰二:金融領域套用 502

11.1 控制項級別的布局管理 502

11.2 視窗級別的布局管理 505

11.3 PyQt 5在私募基金公司中的套用 506

11.3.1 顯示產品基本信息 506

11.3.2 展示產品組合信息 512

11.4 PyQt 5在量化投資中的套用 516

11.5 PyQt 5在券商中的套用 522

11.5.1 從爬蟲說起 523

11.5.2 程式解讀 525

參考文獻 550

相關詞條

熱門詞條

聯絡我們