作 者:王碩,孫洋洋 著
定 價:128
出 版 社:電子工業出版社
出版日期:2017年10月01日
頁 數:572
裝 幀:平裝
ISBN:9787121322914
《PyQt5快速開發與實戰》是介紹PyQt 5理論與實戰的前沿書籍,即繫統化地介紹Qt的基礎知識,又兼顧Python的各種強大模塊,同時包含豐富的項目實戰。旨在幫助讀者快速掌握PyQt 5的應用知識,是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 Tup組) 49
案例2組操作 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.測試程序 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
本書既是介紹PyQt5的快速入門書籍,也是介紹PyQt5實戰應用的書籍。PyQt5是對Qt所有類的Python封裝,即可以利用Qt的強大功能,也可以利用Python豐富的生態,同時能夠結合Python簡潔的語法進行操作,其結果就是使用PyQt5可以高效簡單地開發出自己想要的程序。本書內容豐富,對PyQt5基礎知識的介紹比較全面,同時對新手使用PyQt5的一些重點難點都有專門的章節進行針對性分析,還重點介紹了如何把Python的一些重量級模塊(Pandas、Matplotlib和Plotly)嵌入到PyQt5中,從而極大地節約開發時間。最後,本書會給出一些綜合性較強的實戰案例,幫助讀者快速掌握PyQt5的實戰應用。總而言之,本書旨在幫助讀者以最短的時間掌握PyQt5的基礎知識並能夠實戰應用,希望本書對有Python程序開發需求的讀者有幫助。
王碩,孫洋洋 著
王碩,網名信平,北京鼎鑫拓達資深軟件工程師,具有8年的Java企業應用開發經驗和3年教育培訓經驗。曾主持多個B/S項目的開發,經驗豐富。擅長J2EE(JSP/Servlet、 JDBC、Struts2、Spring、Hibernate)項目開發、Python(程序GUI、數據分析、網絡爬蟲、機器學習)項目開發,JavaScript、HTML 5和數據庫技術,是極寬Top開源團隊核心成員。