PySide 6/PyQt 6 快速開發與實戰

孫洋洋,王碩

買這商品的人也買了...

相關主題

商品描述

本書本書共有9章,包含PySide 6/PyQt 6常用知識及一些經典應用。每個章節側重點不同,但相對獨立,讀者根據目錄即可獲取自己所需的內容。第1章介紹PySide/PyQt的入門知識;第2章介紹Qt Designer的詳細用法;第3章和第4章介紹PySide/PyQt的基本窗口控件的使用方法;第5章介紹PySide/PyQt的特殊控件——表格與樹;第6章介紹一些高級窗口控件;第7章介紹信號/槽和事件;第8章介紹Python的擴展應用;第9章介紹PySide/PyQt的實戰應用。本書旨在幫助讀者以最短的時間掌握PySide 6/PyQt 6的基礎知識並能夠實戰應用,希望本書對有Python程序開發需求的讀者有幫助。

目錄大綱

第1章 認識PySide 6/PyQt 6 1
1.1 PySide 6/PyQt 6框架簡介 1
1.1.1 從GUI到PySide/PyQt 1
1.1.2 PySide 6/PyQt 6的進展 3
1.1.3 PySide/PyQt相對於Qt的優勢 4
1.1.4 PySide 6/PyQt 6與PySide 2/PyQt 5的關系 5
1.1.5 PyQt 5與PyQt 4 6
1.1.6 其他圖形界面開發庫 7
1.2 搭建PySide 6/PyQt 6環境 7
1.2.1 在Windows下使用PySide 6/PyQt 6環境 8
1.2.2 在Windows下自行搭建PySide 6/PyQt 6環境 8
1.2.3 在macOS和Linux下搭建PySide 6/PyQt 6環境 14
1.2.4 測試PySide 6/PyQt 6環境 16
1.3 PySide 6快捷工具簡介 16
1.3.1 Qt設計師 17
1.3.2 Qt用戶交互編譯器 18
1.3.3 Qt資源編譯器 18
1.3.4 Qt幫助文檔 19
1.3.5 Qt翻譯器與其他 19
1.3.6 PyQt 6中的Qt工具 20
1.4 常用IDE的安裝配置與使用 21
1.4.1 Eric 7的安裝 21
1.4.2 Eric 7的相關配置 23
1.4.3 Eric 7的基本使用 24
1.4.4 PyCharm的安裝 28
1.4.5 使用PyCharm配置PySide 6/PyQt 6環境 30
1.4.6 PyCharm的基本使用 32
1.4.7 VSCode的安裝 35
1.4.8 VSCode的配置 36
1.4.9 VSCode的基本使用 37
1.5 PySide/PyQt的啟動方式 40
第2章 Qt Designer的使用 43
2.1 Qt Designer快速入門 43
2.1.1 新建主窗口 44
2.1.2 窗口主要區域介紹 45
2.1.3 查看.ui文件 47
2.1.4 將.ui文件轉換為.py文件 49
2.1.5 將.qrc文件轉換為.py文件 54
2.1.6 界面與邏輯分離 54
2.2 佈局管理入門 55
2.2.1 使用佈局管理器進行佈局 56
2.2.2 使用容器控件進行佈局 59
2.3 Qt Designer實戰應用 60
2.3.1 絕對佈局 61
2.3.2 使用佈局管理器進行佈局 63
2.3.3 其他流程補充 70
2.3.4 測試程序 73
2.4 信號與槽關聯 75
2.4.1 簡單入門 75
2.4.2 獲取信號與槽 80
2.4.3 使用信號/槽機制 85
2.5 菜單欄與工具欄 85
2.5.1 界面設計 85
2.5.2 效果測試 90
2.6 添加圖片(資源文件) 92
2.6.1 創建資源文件 92
2.6.2 添加資源文件 93
2.6.3 轉換資源文件 96
2.6.4 效果測試 97
第3章 基本窗口控件(上) 100
3.1 主窗口 100
3.1.1 窗口類型 100
3.1.2 創建主窗口 102
案例3-1 創建主窗口 103
3.1.3 移動主窗口 106
3.1.4 添加圖標 106
3.1.5 顯示狀態欄 107
3.1.6 窗口坐標系統 107
3.2 QLabel 110
案例3-2 QLabel標簽的基本使用 111
3.2.1 對齊 112
3.2.2 設置顏色 112
3.2.3 顯示HTML信息 112
3.2.4 滑動與單擊事件 112
3.2.5 加載圖片和氣泡提示QToolTip 113
3.2.6 使用快捷鍵 114
案例3-3 QLabel快捷鍵 114
3.3 QLineEdit 115
案例3-4 QlineEdit的基本用法 116
3.3.1 對齊、tooltip和顏色設置 117
3.3.2 占位提示符、限制輸入長度、限制編輯 117
3.3.3 移動指針 118
3.3.4 編輯 119
3.3.5 相關信號與槽 119
3.3.6 快捷鍵 120
3.3.7 隱私保護:回顯模式 121
案例3-5 回顯模式的顯示效果 121
3.3.8 限制輸入:驗證器 123
案例3-6 限制輸入:驗證器 123
3.3.9 限制輸入:掩碼 124
案例3-7 輸入掩碼InputMask 125
3.4 QTextEdit和QPlainTextEdit——多行文本顯示 126
3.4.1 QTextEdit 126
案例3-8 QTextEdit的使用——支持HTML和Markdown 127
3.4.2 QPlainTextEdit 129
案例3-9 QPlainTextEdit控件的使用方法 129
3.4.3 快捷鍵 130
3.4.4 QSyntaxHighlighter 132
案例3-10 QSyntaxHighlighter控件的使用方法 132
3.4.5 QTextBrowser 133
案例3-11 QTextBrowser控件的使用方法 134
3.5 按鈕類控件 137
3.5.1 QAbstractButton 137
3.5.2 QPushButton 139
案例3-12 QPushButton的使用方法 140
3.5.3 QRadioButton、QGroupBox、QButtonGroup 142
案例3-13 QRadioButton的用法 143
3.5.4 QCheckBox 145
案例3-14 QCheckBox的使用方法 146
3.5.5 QCommandLinkButton 149
案例3-15 QCommandLinkButton的使用方法 149
3.6 QToolButton 151
案例3-16 QToolButton的使用方法 151
3.7 QComboBox 157
案例3-17 QComboBox的使用方法 158
3.7.1 查詢 159
3.7.2 增加 160
3.7.3 修改 160
3.7.4 刪除 162
3.7.5 信號與槽函數 162
3.7.6 模型/視圖框架 164
3.7.7 QFontComboBox 164
案例3-18 QFontComboBox的使用方法 166
3.8 QSpinBox和QDoubleSpinBox 168
案例3-19 QSpinBox的使用方法 169
3.8.1 步長和範圍 170
3.8.2 循環 170
3.8.3 前綴、後綴與千分隔符 170
3.8.4 特殊選擇 171
3.8.5 信號與槽 171
3.8.6 自定義顯示格式 172
案例3-20 QSpinBox的自定義格式顯示 172
案例3-21 QDoubleSpinBox的使用方法 173
3.9 日期時間 174
3.9.1 日期時間相關控件 174
3.9.2 QDateTimeEdit、QDateEdit和QTimeEdit 175
案例3-22 QDateTimeEdit控件的使用方法 175
3.9.3 QCalendarWidget 182
案例3-23 QCalendarWidget控件的使用方法 184
3.10 滑動控件 185
3.10.1 QAbstractSlider 186
3.10.2 QSlider 187
案例3-24 QSlider的使用方法 188
3.10.3 QDial 189
案例3-25 QDial控件的使用方法 190
3.10.4 QScrollBar 191
案例3-26 QScrollBar控件的使用方法 192
3.11 QScrollArea 194
案例3-27 QScrollArea控件的使用方法 195
第4章 基本窗口控件(下) 198
4.1 對話框類控件(QDialog族) 198
4.1.1 對話框簡介 199
4.1.2 模式對話框 199
4.1.3 非模式對話框 200
案例4-1 QDialog的基本使用方法 200
4.1.4 擴展對話框 205
案例4-2 QDialog擴展對話框的使用方法 205
4.1.5 QMessageBox 207
案例4-3 QMessageBox控件的使用方法 208
4.1.6 QInputDialog 213
案例4-4 QInputDialog控件的使用方法 214
4.1.7 QFontDialog 216
案例4-5 QFontDialog控件的使用方法 216
4.1.8 QFileDialog 218
案例4-6 QFileDialog控件的使用方法 218
4.1.9 QColorDialog 223
案例4-7 QColorDialog控件的使用方法 224
4.1.10 QProgressDialog和QProgressBar 226
案例4-8 QProgressDialog和QProgressBar的使用方法 227
4.1.11 QDialogButtonBox 232
案例4-9 QDialogButtonBox控件的方法 234
4.2 窗口繪圖類控件 237
4.2.1 QPainter 237
案例4-10 QPainter控件的簡單用法 240
4.2.2 QBrush 242
案例4-11 QBrush的使用方法 245
4.2.3 QPen 247
案例4-12 QPen的方法 249
4.2.4 幾個繪圖案例 251
案例4-13 綜合使用QPainter、QBrush和QPen的方法 252
案例4-14 QPainter的使用方法 252
案例4-15 QPainter實時繪圖 254
案例4-16 繪制同心圓 255
4.2.5 QPixmap 256
4.2.6 QImage 258
案例4-17 QPixmap控件和QImage控件的使用方法 264
4.3 拖曳與剪貼板 267
4.3.1 QMimeData 268
案例4-18 QMimeData控件的使用方法 270
4.3.2 Drag與Drop 272
案例4-19 QDrag的使用方法1 273
案例4-20 QDrag的使用方法2 277
4.3.3 QClipboard 281
案例4-21 QClipboard控件的使用方法 282
4.4 菜單欄、工具欄、狀態欄與快捷鍵 284
4.4.1 菜單欄QMenu 285
案例4-22 QMenuBar、QMenu和QAction的使用方法 285
4.4.2 快捷鍵QkeySequence(Edit)、QShortcut 290
案例4-23 QShortcut的使用方法 294
案例4-24 QKeySequenceEdit的使用方法 295
4.4.3 工具欄QToolBar 298
案例4-25 QToolBar的使用方法 298
4.4.4 QStatusBar 302
案例4-26 QStatusBar控件的使用方法 302
4.5 其他控件 305
4.5.1 QFrame 305
案例4-27 QFrame的使用方法 307
4.5.2 QLCDNumber 309
案例4-28 QLCDNumber的使用方法 309
第5章 表格與樹 310
5.1 QListWidget 310
5.1.1 增/刪項目 311
5.1.2 選擇 311
5.1.3 外觀 313
5.1.4 工具、狀態、幫助提示 313
5.1.5 信號/槽 313
5.1.6 上下文菜單 314
案例5-1 QListWidget控件的使用方法 314
5.2 QTableWidget 323
5.2.1 創建 323
5.2.2 基於項目的操作 324
5.2.3 基於行列的操作 324
5.2.4 導航 324
5.2.5 表頭(標題) 325
5.2.6 自定義小部件 325
5.2.7 調整行列大小 326
5.2.8 拉伸填充剩餘空間 327
5.2.9 坐標系 327
5.2.10 信號/槽 327
5.2.11 上下文菜單 327
案例5-2 QTableWidget控件的使用方法 328
5.3 QTreeWidget 335
案例5-3 QTreeWidget控件的使用方法 338
5.4 模型/視圖/委托框架 339
5.4.1 模型 339
5.4.2 視圖 342
5.4.3 委托 342
5.5 QListView 343
5.5.1 綁定模型和初始化數據 344
5.5.2 增、刪、改、查、移 344
5.5.3 列表視圖佈局 344
5.5.4 其他要點 346
案例5-4 QListView結合QStringListModel的使用方法 346
5.6 QTableView 350
5.6.1 綁定模型和初始化數據 351
5.6.2 模型(QStandardItemModel)的相關方法 351
5.6.3 視圖(QTableView)的相關方法 352
5.6.4 表頭(標題,QHeaderView)的相關方法 353
5.6.5 上下文菜單 355
案例5-5 QTableView結合QStandardItemModel的使用方法 355
5.7 QTreeView 362
案例5-6 QTreeView控件結合QStandardItemModel模型的使用方法 365
案例5-7 QTreeView和QFileSystemModel的使用方法 366
5.8 自定義模型 367
案例5-8 QTableView控制和自定義模型的使用方法 368
5.9 自定義委托 374
案例5-9 QTableView和自定義委托的使用方法 374
5.10 Qt數據庫 381
5.10.1 Qt SQL簡介 381
5.10.2 連接數據庫 382
5.10.3 執行SQL語句 386
案例5-10 數據庫的創建 387
5.10.4 數據庫模型 389
5.10.5 數據庫模型與視圖結合 393
案例5-11 QSqlQueryModel分頁視圖查詢 395
案例5-12 QSqlTableModel排序過濾表 399
案例5-13 QSqlRelationalTableModel關系表單 403
5.10.6 數據感知表單 406
案例5-14 QDataWidgetMapper數據感知表單 407
5.10.7 自定義模型與委托 409
案例5-15 數據庫自定義模型+委托案例 409
第6章 高級窗口控件 413
6.1 窗口風格 413
6.1.1 設置窗口風格 413
6.1.2 設置窗口樣式 414
6.1.3 設置窗口背景 415
6.1.4 設置窗口透明 418
案例6-1 WinStyle案例 418
6.2 佈局管理 420
6.2.1 佈局管理的基礎知識 420
6.2.2 Q(V/H)BoxLayout 423
案例6-2 QBoxLayout的使用方法 425
6.2.3 QGridLayout 428
案例6-3 QGridLayout的使用方法 429
6.2.4 QFormLayout 431
案例6-4 QGridLayout的使用方法 433
6.2.5 QStackedLayout 434
案例6-5 QStackedLayout的使用方法 435
案例6-6 QLayout佈局管理的使用方法 436
6.2.6 QSplitter 439
案例6-7 QSplitter控件的使用方法 440
6.3 容器:裝載更多的控件 443
6.3.1 QTabWidget 443
案例6-8 QTabWidget的使用方法 443
6.3.2 QStackedWidget 446
案例6-9 QStackedWidget控件的使用方法 446
6.3.3 QToolBox 449
案例6-10 QToolBox的使用方法 450
6.3.4 QDockWidget 451
案例6-11 QDockWidget控件的使用方法1 452
案例6-12 QDockWidget控件的使用方法2 455
6.3.5 多文檔界面QMdiArea和QMdiSubWindow 455
案例6-13 QMdiArea控件和QMdiSubWindow控件的使用方法1 459
案例6-14 QMdiArea和QMdiSubWindow的使用方法2 463
6.3.6 QAxWidget 464
案例6-15 QAxWidget的使用方法 465
6.4 多線程 469
6.4.1 QTimer 469
案例6-16 QTimer的使用方法 470
6.4.2 QThread 472
案例6-17 QThread的使用方法 474
6.4.3 事件處理實現刷新 477
6.5 網頁交互 479
6.5.1 加載內容 479
6.5.2 標題和圖標 479
6.5.3 QWebEnginePage的相關方法 479
6.5.4 運行JavaScript函數 482
案例6-18 基於QWebEngineView實現基本的Web瀏覽功能 483
6.6 QSS的UI美化 486
6.6.1 QSS的基本語法規則 486
6.6.2 QSS選擇器的類型 487
6.6.3 QSS子控件 489
6.6.4 QSS偽狀態 489
6.6.5 顏色沖突與解決方法 490
6.6.6 繼承與多樣 491
6.6.7 Qt設計師與樣式表 492
案例6-19 QSS的使用方法 492
6.6.8 QDarkStyleSheet 496
案例6-20 QDarkStyle的使用方法 497
6.7 QML淺議 497
6.7.1 QML的基本概念 498
6.7.2 QML與JavaScript 498
6.7.3 在Python中調用QML 499
案例6-21 在Python中調用 499
案例6-22 將Python對象暴露給QML(一):上下文屬性 500
案例6-23 將Python對象暴露給QML(二):註冊類型 502
案例6-24 qml使用Python模型 504
案例6-25 在QML中調用Python屬性的方法 506
第7章 信號/槽和事件 511
7.1 信號/槽介紹 511
7.1.1 基本介紹 511
7.1.2 創建信號 513
7.1.3 操作信號 513
7.1.4 槽函數 514
7.2 信號/槽的案例 514
案例7-1 信號/槽的使用方法 515
7.2.1 內置信號+內置槽函數 515
7.2.2 內置信號+自定義槽函數 517
7.2.3 自定義信號+內置槽函數 517
7.2.4 自定義信號+自定義槽函數 518
7.2.5 斷開信號與槽連接 518
7.2.6 恢復信號與槽連接 519
7.2.7 裝飾器信號與槽連接 521
7.2.8 多線程信號與槽連接 522
7.3 信號/槽參數 523
案例7-2 信號與槽參數 523
7.3.1 內置信號+默認參數 524
7.3.2 自定義信號+默認參數 524
7.3.3 內置信號+自定義參數lambda 525
7.3.4 內置信號+自定義參數partial 526
7.3.5 自定義信號+自定義參數lambda 527
7.3.6 自定義信號+自定義參數partial 528
7.4 基於Qt Designer的信號/槽 529
案例7-3 基於Qt Designer的信號/槽的使用方法 530
7.5 事件處理機制入門 532
7.5.1 事件和信號/槽的區別 533
7.5.2 常見事件類型 533
7.5.3 使用事件處理的方法 536
7.5.4 經典案例分析 537
案例7-4 事件處理的機制方法1-2 537
案例7-5 事件處理機制和方法3 543
案例7-6 事件處理機制的方法4 546
第8章 Python的擴展應用 547
8.1 使用PyInstaller打包項目生成.exe文件 547
8.1.1 安裝PyInstaller 547
8.1.2 PyInstaller的用法與參數 548
8.1.3 PyInstaller案例 550
8.2 Pandas在PySide/PyQt中的應用 552
8.2.1 qtpandas的安裝 552
8.2.2 官方案例解讀 553
8.2.3 設置提升的窗口控件 555
8.2.4 qtpandas的使用 557
8.3 Matplotlib在PyQt中的應用 559
8.3.1 對MatplotlibWidget的解讀 560
8.3.2 設置提升的窗口控件 563
8.3.3 MatplotlibWidget的使用 564
8.3.4 更多擴展 565
8.4 PyQtGraph在PyQt中的應用 566
8.4.1 PyQtGraph的安裝 567
8.4.2 官方案例解讀 567
8.4.3 設置提升的窗口控件 569
8.4.4 PyQtGraph的使用 569
8.4.5 更多擴展 573
8.5 Plotly在PyQt中的應用 573
8.5.1 Plotly的安裝 574
8.5.2 案例解讀 574
8.5.3 設置提升的窗口控件 575
8.5.4 Plotly的使用 576
8.5.5 Plotly更多擴展 579
8.5.6 Dash的使用 579
8.5.7 Dash的更多擴展 583
第9章 實戰應用 584
9.1 量化投資中的應用 584
9.2 券商投研中的應用 593
9.2.1 從爬蟲說起 594
9.2.2 程序解讀 595
附錄A Qt for Python代碼轉換 618
附錄B C++ to Python代碼轉換 624
附錄C 本書一些通用枚舉表格目錄 630
附錄D 優秀PySide/PyQt開源項目推薦 631