PyQt6是Python應(yīng)用開發(fā)的首選平臺(tái),本書包括PyQt6基礎(chǔ)和PyQt6開發(fā)及實(shí)例兩部分。PyQt6基礎(chǔ)部分通過(guò)一個(gè)簡(jiǎn)單實(shí)例初步熟悉PyQt6的兩種界面開發(fā)方式,然后介紹通用窗口、對(duì)話框(包括子類控件)和主窗口屬性、方法、事件、信號(hào)和槽,在此基礎(chǔ)上介紹布局管理、常用控件、容器布局、菜單欄、工具欄、狀態(tài)欄、表格、樹、拖曳與剪貼、繪圖、二維及三維圖表、定時(shí)器、線程和網(wǎng)頁(yè)交互等。PyQt6開發(fā)及實(shí)例部分包括文檔分析器、網(wǎng)上商城、我的美圖、我的繪圖板、簡(jiǎn)版微信和簡(jiǎn)版抖音。本書內(nèi)容兼顧代碼設(shè)計(jì)和工具設(shè)計(jì),以代碼設(shè)計(jì)為主。PyQt6基礎(chǔ)部分所有實(shí)例均采用代碼設(shè)計(jì),PyQt6開發(fā)及實(shí)例部分一般界面采用工具設(shè)計(jì),功能實(shí)現(xiàn)采用代碼設(shè)計(jì),與實(shí)際應(yīng)用開發(fā)方式相同。實(shí)例側(cè)重于綜合應(yīng)用,每一個(gè)實(shí)例都經(jīng)過(guò)精心考慮,盡可能合理分配重要知識(shí)點(diǎn)和應(yīng)用模塊庫(kù),使其既體現(xiàn)主要知識(shí)的綜合,又是一個(gè)簡(jiǎn)化的流行應(yīng)用。實(shí)例沒(méi)有嚴(yán)格的學(xué)習(xí)順序,讀者可以根據(jù)需要選擇。本書網(wǎng)絡(luò)資源包括源代碼、學(xué)習(xí)課件、所有實(shí)例的工程文件包和對(duì)應(yīng)的二維碼文檔,讀者可通過(guò)電子工業(yè)出版社華信教育資源網(wǎng)免費(fèi)下載。本書可作為PyQt6和Python學(xué)習(xí)與應(yīng)用開發(fā)的參考書,也可作為教學(xué)參考書。
鄭阿奇,南京師范大學(xué)副教授。與電子社合作超過(guò)20年,2008年創(chuàng)建電子社南京研發(fā)中心,先后主編出版計(jì)算機(jī)教材和圖書140多本,受到市場(chǎng)廣泛好評(píng),為電子社計(jì)算機(jī)專業(yè)出版做出了巨大貢獻(xiàn)。
第1章 PyQt6圖形界面程序設(shè)計(jì)入門 1
1.1 第一個(gè)實(shí)例:采用代碼計(jì)算圓面積 1
1.1.1 創(chuàng)建窗口 2
1.1.2 計(jì)算圓面積 3
1.2 第二個(gè)實(shí)例:采用設(shè)計(jì)器計(jì)算圓面積 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界面設(shè)計(jì)工具 19
第2章 窗口 22
2.1 PyQt6窗口和應(yīng)用程序 22
2.1.1 PyQt6界面設(shè)計(jì)環(huán)境:Qt Designer 22
2.1.2 應(yīng)用程序類:QApplication 23
2.2 通用窗口QWidget 23
2.2.1 坐標(biāo)系統(tǒng)和類 23
2.2.2 常用屬性 25
2.2.3 事件 32
2.2.4 信號(hào)/槽 37
2.2.5 通用窗口實(shí)例 40
2.3 對(duì)話框QDialog 42
2.3.1 對(duì)話框?qū)傩?42
2.3.2 對(duì)話框?qū)嵗?43
2.3.3 對(duì)話框子類控件 44
2.4 主窗口QMainWindow 53
2.4.1 主窗口屬性 53
2.4.2 主窗口舉例 55
第3章 布局管理 57
3.1 設(shè)計(jì)器中的控件對(duì)象布局 57
3.1.1 使用布局管理器布局 57
3.1.2 使用容器進(jìn)行布局 59
3.1.3 彈性間隔控件布局 59
3.2 通過(guò)代碼進(jìn)行控件對(duì)象布局 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 標(biāo)簽: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 復(fù)選框:QCheckBox 88
4.2.7 列表框:QListView 和QListWidget 89
4.2.8 下拉列表框:QComboBox 94
4.2.9 計(jì)數(shù)器:QSpinBox和 QDoubleSpinBox 96
4.2.10 日歷:QCalendar 98
4.2.11 日期時(shí)間:QDateTimeEdit 100
4.3 滑動(dòng)條、進(jìn)度條、滾動(dòng)條和旋鈕控件 102
4.3.1 滑動(dòng)條:QSlider 102
4.3.2 進(jìn)度條:QProgressBar 104
4.3.3 滾動(dòng)條: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 選項(xiàng)卡:QTabWidget 115
5.2 窗口布局 118
5.2.1 堆棧窗口:QStackedWidget 118
5.2.2 ?浚篞DockWidget 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 動(dòng)作對(duì)象:QAction 131
6.2 工具欄:QToolBar 136
6.3 狀態(tài)欄:QStatusBar 138
6.4 主窗口綜合測(cè)試實(shí)例 140
6.5 用Qt Designer設(shè)計(jì)菜單與工具欄 142
6.5.1 菜單項(xiàng)與QAction的創(chuàng)建 142
6.5.2 QAction的設(shè)計(jì) 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 三維繪圖實(shí)例 199
第9章 定時(shí)器、線程和網(wǎng)頁(yè)交互 203
9.1 定時(shí)器和線程 203
9.1.1 定時(shí)器:QTimer 203
9.1.2 線程:QThread 204
9.2 網(wǎng)頁(yè)交互 206
9.2.1 顯示指定地址的網(wǎng)頁(yè) 207
9.2.2 嵌入網(wǎng)頁(yè)的HTML代碼 208
9.2.3 嵌入網(wǎng)頁(yè)的JavaSciprt代碼 209
第10章 PyQt6開發(fā)實(shí)例:文檔分析器 212
【技術(shù)基礎(chǔ)】 212
【實(shí)例開發(fā)】 213
10.1 創(chuàng)建項(xiàng)目 213
10.1.1 項(xiàng)目結(jié)構(gòu) 213
10.1.2 界面設(shè)計(jì) 213
10.1.3 主程序框架 216
10.2 文檔的管理 218
10.2.1 目錄導(dǎo)航 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)頁(yè)主題鏈接 229
10.3.3 識(shí)別掃描書頁(yè)文字 231
10.3.4 分析結(jié)果處理 235
10.4 其他功能 235
第11章 PyQt6開發(fā)及實(shí)例:網(wǎng)上商城 237
【技術(shù)基礎(chǔ)】 237
【實(shí)例開發(fā)】 238
11.1 創(chuàng)建項(xiàng)目 238
11.1.1 數(shù)據(jù)準(zhǔn)備 238
11.1.2 初步了解項(xiàng)目結(jié)構(gòu) 239
11.2 功能導(dǎo)航模塊 240
11.2.1 界面設(shè)計(jì) 240
11.2.2 功能開發(fā) 241
11.3 商品選購(gòu)模塊 242
11.3.1 界面設(shè)計(jì) 243
11.3.2 程序框架 244
11.3.3 功能開發(fā) 246
11.3.4 數(shù)據(jù)演示 250
11.4 下單結(jié)算模塊 251
11.4.1 界面設(shè)計(jì) 251
11.4.2 程序框架 253
11.4.3 功能開發(fā) 254
11.4.4 數(shù)據(jù)演示 261
11.5 銷售分析模塊 262
11.5.1 界面設(shè)計(jì) 263
11.5.2 程序框架 264
11.5.3 功能開發(fā) 265
第12章 PyQt6開發(fā)及實(shí)例:我的美圖 271
【技術(shù)基礎(chǔ)】 271
12.1 PIL圖像處理技術(shù) 271
12.1.1 圖像載入(打開)與顯示 272
12.1.2 基礎(chǔ)處理 272
12.1.3 高級(jí)處理 274
12.2 用到的其他控件和技術(shù) 276
【實(shí)例開發(fā)】 276
12.3 創(chuàng)建項(xiàng)目 276
12.3.1 項(xiàng)目結(jié)構(gòu) 276
12.3.2 界面創(chuàng)建 277
12.3.3 主程序框架 278
12.4 圖片打開、顯示和保存 280
12.4.1 圖片打開和保存 281
12.4.2 圖片自適應(yīng)顯示 282
12.5 圖片區(qū)域選擇與操作 283
12.5.1 區(qū)域形狀設(shè)置 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 圖像增強(qiáng) 299
12.7.2 圖像合成 305
12.7.3 人臉識(shí)別與處理 308
第13章 PyQt6開發(fā)及實(shí)例:我的繪圖板 312
【技術(shù)基礎(chǔ)】 312
13.1 繪圖相關(guān)技術(shù) 312
13.2 繪圖場(chǎng)景數(shù)據(jù)結(jié)構(gòu) 313
13.2.1 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 313
13.2.2 數(shù)據(jù)結(jié)構(gòu)處理 315
【實(shí)例開發(fā)】 316
13.3 創(chuàng)建項(xiàng)目 316
13.3.1 項(xiàng)目結(jié)構(gòu) 316
13.3.2 主程序框架 317
13.4 主界面開發(fā) 318
13.4.1 界面設(shè)計(jì) 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 設(shè)置樣式 336
13.5.4 操縱圖元 342
13.6 圖元文件管理 343
第14章 PyQt6開發(fā)及實(shí)例:簡(jiǎn)版微信 349
【技術(shù)基礎(chǔ)】 350
14.1 網(wǎng)絡(luò)通信 350
14.1.1 基于UDP的數(shù)據(jù)通信 350
14.1.2 基于TCP的字節(jié)傳輸 353
14.2 MongoDB數(shù)據(jù)庫(kù) 356
14.2.1 安裝MongoDB 356
14.2.2 創(chuàng)建數(shù)據(jù)庫(kù)MyWeDb 357
14.2.3 數(shù)據(jù)庫(kù)訪問(wèn)與操作 357
14.3 SQLite應(yīng)用 360
14.3.1 訪問(wèn)SQLite 361
14.3.3 記錄日志 361
14.3.4 加載日志 362
14.4 用到的其他控件和技術(shù) 363
【實(shí)例開發(fā)】 363
14.5 創(chuàng)建項(xiàng)目 363
14.5.1 客戶端項(xiàng)目 363
14.5.2 服務(wù)器項(xiàng)目 366
14.6 界面開發(fā) 368
14.6.1 界面設(shè)計(jì) 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 微信增強(qiáng)功能的開發(fā) 382
14.8.1 功能演示 383
14.8.2 文件、圖片、語(yǔ)音的傳輸 385
14.8.3 實(shí)時(shí)語(yǔ)音通話 396
第15章 PyQt6開發(fā)及實(shí)例:簡(jiǎn)版抖音 401
【技術(shù)基礎(chǔ)】 401
15.1 視頻播放處理 401
15.2 MySQL數(shù)據(jù)庫(kù) 402
15.2.1 設(shè)計(jì)數(shù)據(jù)庫(kù)MyTikTok 402
15.2.2 數(shù)據(jù)庫(kù)訪問(wèn)與操作 404
15.2.3 讀寫特殊數(shù)據(jù)類型 405
【實(shí)例開發(fā)】 405
15.3 創(chuàng)建項(xiàng)目 405
15.3.1 項(xiàng)目結(jié)構(gòu) 405
15.3.2 主程序框架 406
15.4 主界面開發(fā) 407
15.4.1 界面設(shè)計(jì) 407
15.4.2 初始化 410
15.4.3 運(yùn)行效果 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)注和點(diǎn)贊 418
15.6.2 評(píng)論與彈幕 422
15.6.3 根據(jù)用戶喜好推薦視頻 425
15.7 視頻錄制、編輯與發(fā)布 427
15.7.1 視頻錄制 427
15.7.2 視頻編輯與發(fā)布 430
附錄 PyQt6項(xiàng)目工程打包 442