关于我们
书单推荐
新书推荐
|
PySide 6/PyQt 6快速开发与实战 读者对象:所有对Python、Qt、PyQt/PySide编程感兴趣的科教人员和广大的计算机编程爱好者阅读,也可作为相关机构的培训教材,只需要对Python有入门基础就可以阅读本书。
本书本书共有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程序开发需求的读者有帮助。
孙洋洋,就职于国营保险公司资管部门,负责公司量化投研体系的开发与维护以及策略研发。熟悉多种编程语言,目前以Python为主。擅长量化投资与程序GUI开发、网络爬虫、机器学习,在金融量化投资领域有多年工作经验。王硕,现从事Python,Go和Java的相关工作,热爱并长期专注于前端,大数据和高性能计算技术的研究,积累了大量的一线开发经验,具有丰富的工业级系统开发和运维实战经验。
第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
你还可能感兴趣
我要评论
|