PyQt6是Python應用開發(fā)的首選平臺,本書包括PyQt6基礎(chǔ)和PyQt6開發(fā)及實例兩部分。PyQt6基礎(chǔ)部分通過一個簡單實例初步熟悉PyQt6的兩種界面開發(fā)方式,然后介紹通用窗口、對話框(包括子類控件)和主窗口屬性、方法、事件、信號和槽,在此基礎(chǔ)上介紹布局管理、常用控件、容器布局、菜單欄、工具欄、狀態(tài)欄、表格、樹、拖曳與剪貼、繪圖、二維及三維圖表、定時器、線程和網(wǎng)頁交互等。PyQt6開發(fā)及實例部分包括文檔分析器、網(wǎng)上商城、我的美圖、我的繪圖板、簡版微信和簡版抖音。本書內(nèi)容兼顧代碼設計和工具設計,以代碼設計為主。PyQt6基礎(chǔ)部分所有實例均采用代碼設計,PyQt6開發(fā)及實例部分一般界面采用工具設計,功能實現(xiàn)采用代碼設計,與實際應用開發(fā)方式相同。實例側(cè)重于綜合應用,每一個實例都經(jīng)過精心考慮,盡可能合理分配重要知識點和應用模塊庫,使其既體現(xiàn)主要知識的綜合,又是一個簡化的流行應用。實例沒有嚴格的學習順序,讀者可以根據(jù)需要選擇。本書網(wǎng)絡資源包括源代碼、學習課件、所有實例的工程文件包和對應的二維碼文檔,讀者可通過電子工業(yè)出版社華信教育資源網(wǎng)免費下載。本書可作為PyQt6和Python學習與應用開發(fā)的參考書,也可作為教學參考書。
鄭阿奇,南京師范大學副教授。與電子社合作超過20年,2008年創(chuàng)建電子社南京研發(fā)中心,先后主編出版計算機教材和圖書140多本,受到市場廣泛好評,為電子社計算機專業(yè)出版做出了巨大貢獻。
第1章 PyQt6圖形界面程序設計入門 1
1.1 第一個實例:采用代碼計算圓面積 1
1.1.1 創(chuàng)建窗口 2
1.1.2 計算圓面積 3
1.2 第二個實例:采用設計器計算圓面積 7
1.2.1 工具的安裝 7
1.2.2 界面開發(fā) 7
1.2.3 功能開發(fā) 13
1.3 PyQt6集成開發(fā)環(huán)境搭建 15
1.3.1 安裝及配置PyCharm 15
1.3.2 PyCharm整合PyQt6界面設計工具 19
第2章 窗口 22
2.1 PyQt6窗口和應用程序 22
2.1.1 PyQt6界面設計環(huán)境:Qt Designer 22
2.1.2 應用程序類:QApplication 23
2.2 通用窗口QWidget 23
2.2.1 坐標系統(tǒng)和類 23
2.2.2 常用屬性 25
2.2.3 事件 32
2.2.4 信號/槽 37
2.2.5 通用窗口實例 40
2.3 對話框QDialog 42
2.3.1 對話框?qū)傩?42
2.3.2 對話框?qū)嵗?43
2.3.3 對話框子類控件 44
2.4 主窗口QMainWindow 53
2.4.1 主窗口屬性 53
2.4.2 主窗口舉例 55
第3章 布局管理 57
3.1 設計器中的控件對象布局 57
3.1.1 使用布局管理器布局 57
3.1.2 使用容器進行布局 59
3.1.3 彈性間隔控件布局 59
3.2 通過代碼進行控件對象布局 61
3.2.1 布局方式 61
3.2.2 布局嵌套 66
3.2.3 其他布局方法 69
第4章 控件功能 71
4.1 控件及其繼承類 71
4.1.1 控件分類 71
4.1.2 控件及其屬性列表 71
4.1.3 控件類和繼承類 72
4.2 常用控件 73
4.2.1 標簽:Label 73
4.2.2 單行文本框:QLineEdit 76
4.2.3 多行文本框:QTextEdit 82
4.2.4 命令按鈕:QPushButton 84
4.2.5 單選按鈕:QRadioButton 86
4.2.6 復選框:QCheckBox 88
4.2.7 列表框:QListView 和QListWidget 89
4.2.8 下拉列表框:QComboBox 94
4.2.9 計數(shù)器:QSpinBox和 QDoubleSpinBox 96
4.2.10 日歷:QCalendar 98
4.2.11 日期時間:QDateTimeEdit 100
4.3 滑動條、進度條、滾動條和旋鈕控件 102
4.3.1 滑動條:QSlider 102
4.3.2 進度條:QProgressBar 104
4.3.3 滾動條:QScrollBar 106
4.3.4 旋鈕:QDial 108
第5章 容器布局 110
5.1 控件容器布局 110
5.1.1 框架:QFrame 110
5.1.2 分組框:QGroupBox 113
5.1.3 選項卡:QTabWidget 115
5.2 窗口布局 118
5.2.1 堆棧窗口:QStackedWidget 118
5.2.2 停靠:QDockWidget 120
5.2.3 多文檔界面:MDI 124
5.2.4 工具盒:ToolBox 127
第6章 菜單欄、工具欄和狀態(tài)欄 130
6.1 菜單欄 130
6.1.1 菜單欄:QMenuBar類 130
6.1.2 菜單欄菜單:QMenu 131
6.1.3 動作對象:QAction 131
6.2 工具欄:QToolBar 136
6.3 狀態(tài)欄:QStatusBar 138
6.4 主窗口綜合測試實例 140
6.5 用Qt Designer設計菜單與工具欄 142
6.5.1 菜單項與QAction的創(chuàng)建 142
6.5.2 QAction的設計 144
6.5.3 添加工具欄與QAction 144
第7章 表格、樹、拖曳與剪貼板 147
7.1 表格 147
7.1.1 表格:QTableView 147
7.1.2 表格:QTableWidget 149
7.2 樹 159
7.2.1 樹:QTreeView 159
7.2.2 樹:QTreeWidget 163
7.3 拖曳與剪貼板 169
7.3.1 拖曳:Drag與Drop 169
7.3.2 剪貼板:QClipboard 171
第8章 繪圖、二維及三維圖表 174
8.1 基本圖形繪制 174
8.1.1 繪圖基礎(chǔ)類 174
8.1.2 繪圖方法 178
8.1.3 路徑繪圖 185
8.2 二維圖表繪制 187
8.2.1 QtCharts基礎(chǔ) 187
8.2.2 繪制函數(shù)曲線 189
8.2.3 繪制柱狀/折線圖 192
8.2.4 繪制餅狀圖 194
8.2.5 matplotlib繪圖 196
8.3 三維圖表繪制 197
8.3.1 QtDataVisualization基礎(chǔ) 197
8.3.2 三維繪圖實例 199
第9章 定時器、線程和網(wǎng)頁交互 203
9.1 定時器和線程 203
9.1.1 定時器:QTimer 203
9.1.2 線程:QThread 204
9.2 網(wǎng)頁交互 206
9.2.1 顯示指定地址的網(wǎng)頁 207
9.2.2 嵌入網(wǎng)頁的HTML代碼 208
9.2.3 嵌入網(wǎng)頁的JavaSciprt代碼 209
第10章 PyQt6開發(fā)實例:文檔分析器 212
【技術(shù)基礎(chǔ)】 212
【實例開發(fā)】 213
10.1 創(chuàng)建項目 213
10.1.1 項目結(jié)構(gòu) 213
10.1.2 界面設計 213
10.1.3 主程序框架 216
10.2 文檔的管理 218
10.2.1 目錄導航 218
10.2.2 文檔歸類 219
10.2.3 打開文檔 221
10.2.4 多文檔窗口布局 222
10.3 文檔的分析 224
10.3.1 文本文字的分析 225
10.3.2 獲取網(wǎng)頁主題鏈接 229
10.3.3 識別掃描書頁文字 231
10.3.4 分析結(jié)果處理 235
10.4 其他功能 235
第11章 PyQt6開發(fā)及實例:網(wǎng)上商城 237
【技術(shù)基礎(chǔ)】 237
【實例開發(fā)】 238
11.1 創(chuàng)建項目 238
11.1.1 數(shù)據(jù)準備 238
11.1.2 初步了解項目結(jié)構(gòu) 239
11.2 功能導航模塊 240
11.2.1 界面設計 240
11.2.2 功能開發(fā) 241
11.3 商品選購模塊 242
11.3.1 界面設計 243
11.3.2 程序框架 244
11.3.3 功能開發(fā) 246
11.3.4 數(shù)據(jù)演示 250
11.4 下單結(jié)算模塊 251
11.4.1 界面設計 251
11.4.2 程序框架 253
11.4.3 功能開發(fā) 254
11.4.4 數(shù)據(jù)演示 261
11.5 銷售分析模塊 262
11.5.1 界面設計 263
11.5.2 程序框架 264
11.5.3 功能開發(fā) 265
第12章 PyQt6開發(fā)及實例:我的美圖 271
【技術(shù)基礎(chǔ)】 271
12.1 PIL圖像處理技術(shù) 271
12.1.1 圖像載入(打開)與顯示 272
12.1.2 基礎(chǔ)處理 272
12.1.3 高級處理 274
12.2 用到的其他控件和技術(shù) 276
【實例開發(fā)】 276
12.3 創(chuàng)建項目 276
12.3.1 項目結(jié)構(gòu) 276
12.3.2 界面創(chuàng)建 277
12.3.3 主程序框架 278
12.4 圖片打開、顯示和保存 280
12.4.1 圖片打開和保存 281
12.4.2 圖片自適應顯示 282
12.5 圖片區(qū)域選擇與操作 283
12.5.1 區(qū)域形狀設置 284
12.5.2 區(qū)域選擇 286
12.5.3 區(qū)域操作 288
12.6 圖像變換 291
12.6.1 轉(zhuǎn)換顯示模式 292
12.6.2 調(diào)整寬高像素比 293
12.6.3 鏡像、旋轉(zhuǎn)和縮放 295
12.6.4 圖像加水印文字 296
12.7 圖像美化 298
12.7.1 圖像增強 299
12.7.2 圖像合成 305
12.7.3 人臉識別與處理 308
第13章 PyQt6開發(fā)及實例:我的繪圖板 312
【技術(shù)基礎(chǔ)】 312
13.1 繪圖相關(guān)技術(shù) 312
13.2 繪圖場景數(shù)據(jù)結(jié)構(gòu) 313
13.2.1 數(shù)據(jù)結(jié)構(gòu)設計 313
13.2.2 數(shù)據(jù)結(jié)構(gòu)處理 315
【實例開發(fā)】 316
13.3 創(chuàng)建項目 316
13.3.1 項目結(jié)構(gòu) 316
13.3.2 主程序框架 317
13.4 主界面開發(fā) 318
13.4.1 界面設計 318
13.4.2 文件管理欄開發(fā) 320
13.4.3 樣式欄開發(fā) 321
13.4.4 工具箱開發(fā) 325
13.4.5 繪圖區(qū)和狀態(tài)欄開發(fā) 326
13.5 繪圖功能開發(fā) 328
13.5.1 創(chuàng)建圖元 328
13.5.2 調(diào)整圖元大小 333
13.5.3 設置樣式 336
13.5.4 操縱圖元 342
13.6 圖元文件管理 343
第14章 PyQt6開發(fā)及實例:簡版微信 349
【技術(shù)基礎(chǔ)】 350
14.1 網(wǎng)絡通信 350
14.1.1 基于UDP的數(shù)據(jù)通信 350
14.1.2 基于TCP的字節(jié)傳輸 353
14.2 MongoDB數(shù)據(jù)庫 356
14.2.1 安裝MongoDB 356
14.2.2 創(chuàng)建數(shù)據(jù)庫MyWeDb 357
14.2.3 數(shù)據(jù)庫訪問與操作 357
14.3 SQLite應用 360
14.3.1 訪問SQLite 361
14.3.3 記錄日志 361
14.3.4 加載日志 362
14.4 用到的其他控件和技術(shù) 363
【實例開發(fā)】 363
14.5 創(chuàng)建項目 363
14.5.1 客戶端項目 363
14.5.2 服務器項目 366
14.6 界面開發(fā) 368
14.6.1 界面設計 368
14.6.2 初始化 371
14.6.3 界面切換 372
14.7 微信基本功能開發(fā) 374
14.7.1 用戶管理 374
14.7.2 文字聊天 377
14.7.3 信息暫存與轉(zhuǎn)發(fā) 381
14.8 微信增強功能的開發(fā) 382
14.8.1 功能演示 383
14.8.2 文件、圖片、語音的傳輸 385
14.8.3 實時語音通話 396
第15章 PyQt6開發(fā)及實例:簡版抖音 401
【技術(shù)基礎(chǔ)】 401
15.1 視頻播放處理 401
15.2 MySQL數(shù)據(jù)庫 402
15.2.1 設計數(shù)據(jù)庫MyTikTok 402
15.2.2 數(shù)據(jù)庫訪問與操作 404
15.2.3 讀寫特殊數(shù)據(jù)類型 405
【實例開發(fā)】 405
15.3 創(chuàng)建項目 405
15.3.1 項目結(jié)構(gòu) 405
15.3.2 主程序框架 406
15.4 主界面開發(fā) 407
15.4.1 界面設計 407
15.4.2 初始化 410
15.4.3 運行效果 411
15.5 視頻基本功能開發(fā) 411
15.5.1 視頻播放 411
15.5.2 視頻控制 415
15.5.3 視頻信息顯示 416
15.6 特色功能開發(fā) 418
15.6.1 關(guān)注和點贊 418
15.6.2 評論與彈幕 422
15.6.3 根據(jù)用戶喜好推薦視頻 425
15.7 視頻錄制、編輯與發(fā)布 427
15.7.1 視頻錄制 427
15.7.2 視頻編輯與發(fā)布 430
附錄 PyQt6項目工程打包 442