PyQt是一個(gè)創(chuàng)建GUI應(yīng)用程序的工具包,是Python編程語(yǔ)言和Qt庫(kù)的成功融合。本書(shū)旨在通過(guò)深入淺出的講解和簡(jiǎn)明的程序示例教讀者掌握PyQt的開(kāi)發(fā)技巧。
本書(shū)分為10章,從PyQt的安裝和基礎(chǔ)知識(shí)講起,陸續(xù)介紹了基礎(chǔ)控件(如標(biāo)簽控件、消息框、文本框、按鈕及控件等)、高級(jí)控件(如組合框、滾動(dòng)條、容器控件及各類(lèi)視圖等)、窗口(如屬性、坐標(biāo)、事件等)、Qt Designer(如安裝與配置、編輯模式等)、PyQt高級(jí)應(yīng)用(如數(shù)據(jù)庫(kù)、多線(xiàn)程、動(dòng)畫(huà)、音視頻、網(wǎng)頁(yè)交互等)、圖形視圖框架(如圖元、場(chǎng)景、視圖、事件傳遞等)、打包(如PyInstaller、Nuitka等)等內(nèi)容。此外,本書(shū)還通過(guò)兩個(gè)開(kāi)發(fā)實(shí)例(可視化爬蟲(chóng)軟件和《經(jīng)典貪吃蛇》游戲)帶領(lǐng)讀者鞏固了書(shū)中介紹的相關(guān)知識(shí)點(diǎn)。
本書(shū)內(nèi)容簡(jiǎn)潔實(shí)用、實(shí)操性強(qiáng),適合對(duì)Python編程及GUI開(kāi)發(fā)感興趣的讀者閱讀。
1.內(nèi)容通俗易懂
本書(shū)對(duì)新手讀者非常友好,從安裝配置環(huán)境開(kāi)始講解,通過(guò)大大小小的代碼示例演示了各個(gè)PyQt模塊的開(kāi)發(fā)技巧。
2.代碼示例豐富
本書(shū)囊括了豐富的代碼示例,并結(jié)合詳細(xì)的注釋語(yǔ)句幫助讀者掌握編程技巧。此外,本書(shū)還有兩個(gè)完整的開(kāi)發(fā)實(shí)例(可視化爬蟲(chóng)軟件和《經(jīng)典貪吃蛇》游戲),能夠幫助讀者前面鞏固所學(xué)知識(shí)點(diǎn)。
3.提供全書(shū)源碼和社群答疑
本書(shū)提供全部源碼資源,還提供配套的QQ社群,幫助讀者解惑答疑。具體信息可參見(jiàn)書(shū)中前言提示。
任路順,一名熱愛(ài)代碼的開(kāi)源開(kāi)發(fā)者,也是開(kāi)源軟件 Qt Box 的作者。他擁有多年P(guān)ython/C++ 開(kāi)發(fā)經(jīng)驗(yàn),專(zhuān)注于軟件開(kāi)發(fā),也喜歡研究爬蟲(chóng)、機(jī)器學(xué)習(xí)等技術(shù),業(yè)余時(shí)間喜歡開(kāi)發(fā)一些小游戲。他在CSDN和知乎平臺(tái)上發(fā)布的《快速掌握 PyQt5》《樹(shù)莓派項(xiàng)目實(shí)戰(zhàn)》《PyInstaller 打包實(shí)戰(zhàn)指南》等專(zhuān)欄受到讀者的廣泛好評(píng)。
第 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è)簡(jiǎn)單的PyQt窗口 3
1.2.1 程序入口 3
1.2.2 在PyQt程序中嵌入HTML代碼 4
1.2.3 在類(lèi)中創(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 各種類(lèi)型的消息框 30
2.2.2 與消息框交互 32
2.2.3 編寫(xiě)帶中文按鈕的消息框 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 儀表盤(pán)控件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的高級(jí)控件 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)簽頁(yè)控件QTabWidget 64
3.3.3 堆?丶StackedWidget 66
3.3.4 多文檔區(qū)域控件QMdiArea 67
3.4 列表視圖控件、樹(shù)形視圖控件、表格視圖控件 69
3.4.1 列表視圖控件QListView 70
3.4.2 樹(shù)形視圖控件QTreeView 72
3.4.3 表格視圖控件QTableView 73
3.5 簡(jiǎn)化版的列表、樹(shù)形、表格視圖控件 75
3.5.1 簡(jiǎn)化版列表視圖控件QListWidget 75
3.5.2 簡(jiǎn)化版樹(shù)形視圖控件QTreeWidget 76
3.5.3 簡(jiǎn)化版表格視圖控件QTableWidget 78
3.6 各種對(duì)話(huà)框控件 79
3.6.1 顏色對(duì)話(huà)框控件QColorDialog 79
3.6.2 字體對(duì)話(huà)框控件QFontDialog 81
3.6.3 輸入對(duì)話(huà)框控件QInputDialog 82
3.6.4 文件對(duì)話(huà)框控件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 鍵盤(pán)事件 97
4.3.4 鼠標(biāo)事件 98
4.3.5 拖放事件 100
4.3.6 繪制事件 102
4.4 主窗口類(lèi)QMainWindow 103
4.4.1 主窗口的組成部分 103
4.4.2 停靠窗口類(lèi)QDockWidget 105
4.4.3 菜單欄類(lèi)QMenuBar 107
4.4.4 工具欄類(lèi)QToolBar 108
4.4.5 狀態(tài)欄類(lèi)QStatusBar 110
4.4.6 程序啟動(dòng)畫(huà)面類(lèi)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 對(duì)象查看器 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 登錄框開(kāi)發(fā)實(shí)戰(zhàn) 127
5.4.1 編輯屬性 127
5.4.2 布局控件 129
5.4.3 將.ui文件轉(zhuǎn)換成.py文件 130
5.4.4 編寫(xiě)功能邏輯代碼 130
5.5 本章小結(jié) 131
第6章 PyQt高級(jí)應(yīng)用 132
6.1 數(shù)據(jù)庫(kù) 132
6.1.1 數(shù)據(jù)庫(kù)連接和關(guān)閉 133
6.1.2 執(zhí)行SQL語(yǔ)句 134
6.1.3 數(shù)據(jù)庫(kù)模型 136
6.2 多線(xiàn)程 139
6.2.1 使用QThread線(xiàn)程類(lèi) 140
6.2.2 在線(xiàn)程中獲取窗口數(shù)據(jù)信息 143
6.2.3 編寫(xiě)一個(gè)簡(jiǎn)單的爬蟲(chóng)程序 144
6.3 繪圖與打印 146
6.3.1 畫(huà)筆類(lèi)QPen 146
6.3.2 畫(huà)刷類(lèi)QBrush 149
6.3.3 用鼠標(biāo)在窗口上繪制矩形 150
6.3.4 打印 153
6.4 動(dòng)畫(huà) 155
6.4.1 屬性動(dòng)畫(huà)類(lèi)QPropertyAnimation 155
6.4.2 串行動(dòng)畫(huà)組類(lèi)QSequentialAnimationGroup 158
6.4.3 并行動(dòng)畫(huà)組類(lèi)QParallelAnimationGroup 160
6.4.4 時(shí)間軸類(lèi)QTimeLine 162
6.5 音頻和視頻 164
6.5.1 聲音類(lèi)QSound 164
6.5.2 音效類(lèi)QSoundEffect 165
6.5.3 媒體播放機(jī)類(lèi)QMediaPlayer 166
6.6 網(wǎng)頁(yè)交互 170
6.6.1 了解QWebEngineView 170
6.6.2 制作一款簡(jiǎn)單的瀏覽器 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 選擇器的類(lèi)型 187
6.8.4 子控制器 189
6.8.5 偽狀態(tài) 190
6.8.6 QSS第三方庫(kù) 191
6.9 國(guó)際化 193
6.9.1 使用translate()方法 193
6.9.2 制作.ts文件 194
6.9.3 使用Qt Linguist 196
6.9.4 實(shí)現(xiàn)語(yǔ)言切換功能 198
6.10 本章小結(jié) 199
第7章 圖形視圖框架 200
7.1 圖形圖元類(lèi)QGraphicsItem 200
7.1.1 標(biāo)準(zhǔn)圖元 200
7.1.2 圖元層級(jí) 203
7.1.3 圖元變換 205
7.1.4 圖元分組 206
7.1.5 碰撞檢測(cè) 208
7.1.6 給圖元添加信號(hào)和動(dòng)畫(huà) 209
7.2 圖形場(chǎng)景類(lèi)QGraphicsScene 211
7.2.1 管理圖元 211
7.2.2 嵌入控件 212
7.3 圖形視圖類(lèi)QGraphicsView 214
7.3.1 視圖和場(chǎng)景的大小關(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開(kāi)發(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開(kāi)發(fā)的程序 246
8.3 本章小結(jié) 247
第9章 開(kāi)發(fā)可視化爬蟲(chóng)軟件 248
9.1 實(shí)現(xiàn)爬蟲(chóng)功能 249
9.1.1 分析目標(biāo)網(wǎng)站 249
9.1.2 編寫(xiě)爬蟲(chóng)代碼 250
9.2 將爬蟲(chóng)與界面結(jié)合 252
9.2.1 完成界面布局 252
9.2.2 編寫(xiě)爬蟲(chóng)線(xiàn)程 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章 開(kāi)發(fā)《經(jīng)典貪吃蛇》游戲 267
10.1 編寫(xiě)游戲場(chǎng)景 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 在視圖窗口中顯示場(chǎng)景 275
10.2 加入食物和貪吃蛇 277
10.2.1 在場(chǎng)景中添加食物 277
10.2.2 在場(chǎng)景中添加貪吃蛇 279
10.2.3 如何讓貪吃蛇動(dòng)起來(lái) 283
10.3 實(shí)現(xiàn)剩余的游戲邏輯 284
10.3.1 用方向鍵控制貪吃蛇 284
10.3.2 重新開(kāi)始、暫停和繼續(xù) 286
10.3.3 播放音頻 287
10.4 打包 289
10.4.1 用PyInstaller打包 289
10.4.2 用Nuitka打包 290
10.5 本章小結(jié) 291