PyQt是一個(gè)創(chuàng)建GUI應(yīng)用程序的工具包,是Python編程語言和Qt庫的成功融合。本書旨在通過深入淺出的講解和簡明的程序示例教讀者掌握PyQt的開發(fā)技巧。
本書分為10章,從PyQt的安裝和基礎(chǔ)知識(shí)講起,陸續(xù)介紹了基礎(chǔ)控件(如標(biāo)簽控件、消息框、文本框、按鈕及控件等)、高級控件(如組合框、滾動(dòng)條、容器控件及各類視圖等)、窗口(如屬性、坐標(biāo)、事件等)、Qt Designer(如安裝與配置、編輯模式等)、PyQt高級應(yīng)用(如數(shù)據(jù)庫、多線程、動(dòng)畫、音視頻、網(wǎng)頁交互等)、圖形視圖框架(如圖元、場景、視圖、事件傳遞等)、打包(如PyInstaller、Nuitka等)等內(nèi)容。此外,本書還通過兩個(gè)開發(fā)實(shí)例(可視化爬蟲軟件和《經(jīng)典貪吃蛇》游戲)帶領(lǐng)讀者鞏固了書中介紹的相關(guān)知識(shí)點(diǎn)。
本書內(nèi)容簡潔實(shí)用、實(shí)操性強(qiáng),適合對Python編程及GUI開發(fā)感興趣的讀者閱讀。
1.內(nèi)容通俗易懂
本書對新手讀者非常友好,從安裝配置環(huán)境開始講解,通過大大小小的代碼示例演示了各個(gè)PyQt模塊的開發(fā)技巧。
2.代碼示例豐富
本書囊括了豐富的代碼示例,并結(jié)合詳細(xì)的注釋語句幫助讀者掌握編程技巧。此外,本書還有兩個(gè)完整的開發(fā)實(shí)例(可視化爬蟲軟件和《經(jīng)典貪吃蛇》游戲),能夠幫助讀者前面鞏固所學(xué)知識(shí)點(diǎn)。
3.提供全書源碼和社群答疑
本書提供全部源碼資源,還提供配套的QQ社群,幫助讀者解惑答疑。具體信息可參見書中前言提示。
任路順,一名熱愛代碼的開源開發(fā)者,也是開源軟件 Qt Box 的作者。他擁有多年P(guān)ython/C++ 開發(fā)經(jīng)驗(yàn),專注于軟件開發(fā),也喜歡研究爬蟲、機(jī)器學(xué)習(xí)等技術(shù),業(yè)余時(shí)間喜歡開發(fā)一些小游戲。他在CSDN和知乎平臺(tái)上發(fā)布的《快速掌握 PyQt5》《樹莓派項(xiàng)目實(shí)戰(zhàn)》《PyInstaller 打包實(shí)戰(zhàn)指南》等專欄受到讀者的廣泛好評。
第 1章 PyQt基礎(chǔ)知識(shí) 1
1.1 安裝PyQt 1
1.1.1 在不同系統(tǒng)上安裝 1
1.1.2 驗(yàn)證安裝是否成功 3
1.2 設(shè)計(jì)一個(gè)簡單的PyQt窗口 3
1.2.1 程序入口 3
1.2.2 在PyQt程序中嵌入HTML代碼 4
1.2.3 在類中創(chuàng)建窗口 5
1.3 布局管理 6
1.3.1 使用move()方法布局 7
1.3.2 垂直布局管理器QVBoxLayout 8
1.3.3 水平布局管理器QHBoxLayout 9
1.3.4 表單布局管理器QFormLayout 10
1.3.5 網(wǎng)格布局管理器QGridLayout 11
1.3.6 布局嵌套 12
1.4 信號(hào)和槽 13
1.4.1 理解信號(hào)和槽機(jī)制 13
1.4.2 一個(gè)信號(hào)連接一個(gè)槽 14
1.4.3 一個(gè)信號(hào)連接多個(gè)槽 17
1.4.4 多個(gè)信號(hào)連接一個(gè)槽 18
1.4.5 信號(hào)與信號(hào)連接 19
1.4.6 自定義信號(hào) 20
1.5 學(xué)會(huì)使用文檔 22
1.5.1 理解文檔上的C++代碼 22
1.5.2 如何使用文檔 23
1.6 本章小結(jié) 25
第 2章 PyQt的基礎(chǔ)控件 26
2.1 標(biāo)簽控件QLabel 26
2.1.1 顯示文本 26
2.1.2 顯示圖片 27
2.1.3 顯示動(dòng)圖 28
2.2 消息框控件QMessageBox 30
2.2.1 各種類型的消息框 30
2.2.2 與消息框交互 32
2.2.3 編寫帶中文按鈕的消息框 33
2.3 文本框控件 34
2.3.1 單行文本框控件QLineEdit 34
2.3.2 文本編輯框控件QTextEdit 36
2.3.3 文本瀏覽框控件QTextBrowser 38
2.4 各種按鈕控件 39
2.4.1 普通按鈕控件QPushButton 39
2.4.2 工具按鈕控件QToolButton 40
2.4.3 單選框按鈕控件QRadioButton 41
2.4.4 復(fù)選框按鈕控件QCheckBox 42
2.4.5 下拉框按鈕控件QComboBox 43
2.5 與數(shù)字相關(guān)的控件 45
2.5.1 液晶數(shù)字控件QLCDNumber 45
2.5.2 數(shù)字調(diào)節(jié)框控件QSpinBox和QDoubleSpinBox 46
2.5.3 滑動(dòng)條控件QSlider 47
2.5.4 儀表盤控件QDial 48
2.6 與日期相關(guān)的控件 49
2.6.1 日歷控件QCalendarWidget 49
2.6.2 日期時(shí)間控件QDateTimeEdit 51
2.7 定時(shí)器控件和進(jìn)度條控件 53
2.7.1 定時(shí)器控件QTimer 53
2.7.2 進(jìn)度條控件QProgressBar 54
2.8 本章小結(jié) 55
第3章 PyQt的高級控件 56
3.1 組合框控件和工具箱控件 56
3.1.1 分組框控件QGroupBox 56
3.1.2 工具箱控件QToolBox 57
3.2 滾動(dòng)區(qū)域控件和滾動(dòng)條控件 59
3.2.1 滾動(dòng)區(qū)域控件QScrollArea 59
3.2.2 滾動(dòng)條控件QScrollBar 61
3.3 更多容器控件 63
3.3.1 拆分窗口控件QSplitter 63
3.3.2 標(biāo)簽頁控件QTabWidget 64
3.3.3 堆?丶StackedWidget 66
3.3.4 多文檔區(qū)域控件QMdiArea 67
3.4 列表視圖控件、樹形視圖控件、表格視圖控件 69
3.4.1 列表視圖控件QListView 70
3.4.2 樹形視圖控件QTreeView 72
3.4.3 表格視圖控件QTableView 73
3.5 簡化版的列表、樹形、表格視圖控件 75
3.5.1 簡化版列表視圖控件QListWidget 75
3.5.2 簡化版樹形視圖控件QTreeWidget 76
3.5.3 簡化版表格視圖控件QTableWidget 78
3.6 各種對話框控件 79
3.6.1 顏色對話框控件QColorDialog 79
3.6.2 字體對話框控件QFontDialog 81
3.6.3 輸入對話框控件QInputDialog 82
3.6.4 文件對話框控件QFileDialog 84
3.7 本章小結(jié) 86
第4章 深入窗口 87
4.1 窗口屬性 87
4.1.1 窗口標(biāo)題和圖標(biāo) 88
4.1.2 窗口大小和位置 88
4.1.3 其他窗口屬性 91
4.2 窗口坐標(biāo) 93
4.2.1 理解坐標(biāo)體系 93
4.2.2 窗口的組成部分 94
4.3 窗口事件 95
4.3.1 窗口關(guān)閉事件 95
4.3.2 窗口大小調(diào)整事件 96
4.3.3 鍵盤事件 97
4.3.4 鼠標(biāo)事件 98
4.3.5 拖放事件 100
4.3.6 繪制事件 102
4.4 主窗口類QMainWindow 103
4.4.1 主窗口的組成部分 103
4.4.2 ?看翱陬怮DockWidget 105
4.4.3 菜單欄類QMenuBar 107
4.4.4 工具欄類QToolBar 108
4.4.5 狀態(tài)欄類QStatusBar 110
4.4.6 程序啟動(dòng)畫面類QSplashScreen 112
4.5 本章小結(jié) 113
第5章 Qt Designer 114
5.1 安裝與配置 114
5.1.1 在Windows系統(tǒng)上安裝 114
5.1.2 在macOS系統(tǒng)上安裝 115
5.1.3 在Ubuntu系統(tǒng)上安裝 115
5.1.4 在PyCharm中配置設(shè)計(jì)師 116
5.2 了解設(shè)計(jì)師窗口中的各個(gè)部分 117
5.2.1 控件箱 118
5.2.2 對象查看器 118
5.2.3 屬性編輯器 119
5.2.4 菜單欄和工具欄 119
5.3 4種編輯模式 121
5.3.1 布局模式 121
5.3.2 編輯信號(hào)和槽模式 123
5.3.3 編輯伙伴關(guān)系模式 125
5.3.4 編輯Tab順序模式 126
5.4 登錄框開發(fā)實(shí)戰(zhàn) 127
5.4.1 編輯屬性 127
5.4.2 布局控件 129
5.4.3 將.ui文件轉(zhuǎn)換成.py文件 130
5.4.4 編寫功能邏輯代碼 130
5.5 本章小結(jié) 131
第6章 PyQt高級應(yīng)用 132
6.1 數(shù)據(jù)庫 132
6.1.1 數(shù)據(jù)庫連接和關(guān)閉 133
6.1.2 執(zhí)行SQL語句 134
6.1.3 數(shù)據(jù)庫模型 136
6.2 多線程 139
6.2.1 使用QThread線程類 140
6.2.2 在線程中獲取窗口數(shù)據(jù)信息 143
6.2.3 編寫一個(gè)簡單的爬蟲程序 144
6.3 繪圖與打印 146
6.3.1 畫筆類QPen 146
6.3.2 畫刷類QBrush 149
6.3.3 用鼠標(biāo)在窗口上繪制矩形 150
6.3.4 打印 153
6.4 動(dòng)畫 155
6.4.1 屬性動(dòng)畫類QPropertyAnimation 155
6.4.2 串行動(dòng)畫組類QSequentialAnimationGroup 158
6.4.3 并行動(dòng)畫組類QParallelAnimationGroup 160
6.4.4 時(shí)間軸類QTimeLine 162
6.5 音頻和視頻 164
6.5.1 聲音類QSound 164
6.5.2 音效類QSoundEffect 165
6.5.3 媒體播放機(jī)類QMediaPlayer 166
6.6 網(wǎng)頁交互 170
6.6.1 了解QWebEngineView 170
6.6.2 制作一款簡單的瀏覽器 172
6.7 網(wǎng)絡(luò)應(yīng)用 175
6.7.1 QUdpSocket 175
6.7.2 QTcpSocket和QTcpServer 180
6.8 QSS 183
6.8.1 安裝QSS高亮插件 185
6.8.2 基本規(guī)則 185
6.8.3 選擇器的類型 187
6.8.4 子控制器 189
6.8.5 偽狀態(tài) 190
6.8.6 QSS第三方庫 191
6.9 國際化 193
6.9.1 使用translate()方法 193
6.9.2 制作.ts文件 194
6.9.3 使用Qt Linguist 196
6.9.4 實(shí)現(xiàn)語言切換功能 198
6.10 本章小結(jié) 199
第7章 圖形視圖框架 200
7.1 圖形圖元類QGraphicsItem 200
7.1.1 標(biāo)準(zhǔn)圖元 200
7.1.2 圖元層級 203
7.1.3 圖元變換 205
7.1.4 圖元分組 206
7.1.5 碰撞檢測 208
7.1.6 給圖元添加信號(hào)和動(dòng)畫 209
7.2 圖形場景類QGraphicsScene 211
7.2.1 管理圖元 211
7.2.2 嵌入控件 212
7.3 圖形視圖類QGraphicsView 214
7.3.1 視圖和場景的大小關(guān)系 215
7.3.2 視圖變換 216
7.4 事件傳遞與坐標(biāo)轉(zhuǎn)換 217
7.4.1 事件傳遞順序 217
7.4.2 坐標(biāo)轉(zhuǎn)換 219
7.5 本章小結(jié) 221
第8章 打包 222
8.1 PyInstaller 222
8.1.1 環(huán)境配置 222
8.1.2 兩種打包模式 223
8.1.3 黑框的調(diào)試作用 225
8.1.4 給可執(zhí)行文件加上圖標(biāo) 226
8.1.5 打包資源文件 226
8.1.6 減小打包后的文件大小 228
8.1.7 其他常用的命令 230
8.1.8 用PyInstaller打包用PyQt開發(fā)的程序 232
8.2 Nuitka 234
8.2.1 環(huán)境配置 234
8.2.2 兩種打包模式 237
8.2.3 給可執(zhí)行文件加上圖標(biāo) 239
8.2.4 打包資源文件 240
8.2.5 啟用插件 242
8.2.6 減小打包文件的大小 243
8.2.7 其他常用的命令 244
8.2.8 用Nuitka打包用PyQt開發(fā)的程序 246
8.3 本章小結(jié) 247
第9章 開發(fā)可視化爬蟲軟件 248
9.1 實(shí)現(xiàn)爬蟲功能 249
9.1.1 分析目標(biāo)網(wǎng)站 249
9.1.2 編寫爬蟲代碼 250
9.2 將爬蟲與界面結(jié)合 252
9.2.1 完成界面布局 252
9.2.2 編寫爬蟲線程 254
9.2.3 在界面上顯示爬取數(shù)據(jù)和日志 257
9.2.4 實(shí)現(xiàn)保存功能 259
9.3 音效與美化 262
9.3.1 添加音效 262
9.3.2 美化界面 263
9.4 打包 264
9.4.1 用PyInstaller打包 264
9.4.2 用Nuitka打包 265
9.5 本章小結(jié) 266
第 10章 開發(fā)《經(jīng)典貪吃蛇》游戲 267
10.1 編寫游戲場景 268
10.1.1 繪制背景和貪吃蛇圖標(biāo) 269
10.1.2 繪制分?jǐn)?shù) 270
10.1.3 繪制可移動(dòng)區(qū)域和邊框 271
10.1.4 繪制“暫!焙汀袄^續(xù)”按鈕 272
10.1.5 繪制游戲失敗提示 274
10.1.6 在視圖窗口中顯示場景 275
10.2 加入食物和貪吃蛇 277
10.2.1 在場景中添加食物 277
10.2.2 在場景中添加貪吃蛇 279
10.2.3 如何讓貪吃蛇動(dòng)起來 283
10.3 實(shí)現(xiàn)剩余的游戲邏輯 284
10.3.1 用方向鍵控制貪吃蛇 284
10.3.2 重新開始、暫停和繼續(xù) 286
10.3.3 播放音頻 287
10.4 打包 289
10.4.1 用PyInstaller打包 289
10.4.2 用Nuitka打包 290
10.5 本章小結(jié) 291