书籍详情
Python GUI开发手册:基础·实战·强化
作者:明日科技 著
出版社:化学工业出版社
出版时间:2022-03-01
ISBN:9787122406408
定价:¥128.00
购买这本书可以去
内容简介
《Python GUI开发手册:基础·实战·强化》是“计算机科学与技术手册系列”图书之一,该系列图书内容全面,以理论联系实际、能学到并做到为宗旨,以技术为核心,以案例为辅助,引领读者全面学习基础技术、代码编写方法和具体应用项目。旨在为想要进入相应领域或者已经在该领域深耕多年的技术人员提供新而全的技术性内容及案例。本书以Python语言为载体讲解GUI开发,分为4篇,分别是:基础篇、tkinter模块实战篇、PyQt5模块实战篇和项目强化篇,共30章。内容由浅入深,循序渐进,使读者在打好基础的同时逐步提升技能。本书内容包含了GUI开发必备的基础知识和数据库相关知识,以较大篇幅讲解了目前应用较广的两个开发模块(tkinter和PyQt5)和相应的12个关键案例,同时配备了两个大型项目,使读者能够同步做出产品,达到学到并且做到的目的。 本书适合Python GUI开发从业者、Python 开发程序员、Python 开发以及人工智能的爱好者阅读,也可供高校计算机相关专业师生参考。
作者简介
明日科技,吉林省明日科技有限公司,组织编写,吉林省明日科技有限公司是一家以数字出版为核心的高新技术企业。是国内IT信息服务领域的品牌。吉林省明日科技有限公司的主要产品有图书、编程词典、明日学院在线教育等。2003年1月,明日团队编程图书问世,在同等图书中长期排名前列。2007年9月,图书版权输出到台湾,目前已经有近20本图书版权输出到台湾。2009年11月,图书已形成软件工程师入门、软件工程师典藏等多个系列,共200多本图书。2011年,编程词典(个人版)和编程词典(珍藏版)系列软件隆重上市。《Java从入门到精通》持续八年畅销全行业优秀畅销书长期位居Java销售排行榜前列畅销书[1-2]
目录
第1篇 基础篇
第1章 认识GUI窗体开发
1.1 什么是GUI 3
1.2 常用的Python GUI框架 3
1.2.1 tkinter模块 3
1.2.2 PyQt5模块 4
1.2.3 其他常用GUI开发库 5
第2章 搭建开发环境
2.1 Python的下载与安装 8
2.1.1 下载Python 8
2.1.2 安装Python 10
2.1.3 测试Python是否安装成功 12
2.1.4 Python安装失败的解决方法 12
2.1.5 测试tkinter是否可用 14
2.2 PyCharm开发工具的下载与安装 14
2.2.1 下载PyCharm 14
2.2.2 安装PyCharm 15
2.2.3 启动并配置PyCharm 16
2.3 在PyCharm中配置PyQt5环境 19
2.3.1 安装PyQt5相关模块 19
2.3.2 配置PyQt5设计器及转换工具 21
第3章 数据库编程基础
3.1 MySQL的安装与配置 26
3.1.1 MySQL简介 26
3.1.2 下载MySQL 26
3.1.3 安装MySQL 27
3.1.4 配置MySQL 28
3.2 数据库操作 29
3.2.1 创建数据库 30
3.2.2 查看数据库 30
3.2.3 删除数据库 31
3.3 数据表操作 31
3.3.1 创建数据表 31
3.3.2 查看数据表 32
3.3.3 修改表结构 33
3.3.4 删除数据表 34
3.4 数据类型 35
3.4.1 数字类型 35
3.4.2 字符串类型 36
3.4.3 日期和时间类型 37
3.5 数据的增查改删 37
3.5.1 增加数据 37
3.5.2 查询数据 38
3.5.3 修改数据 41
3.5.4 删除数据 42
3.6 PyMySQL操作数据库 42
3.6.1 安装PyMySQL 42
3.6.2 连接数据库 43
3.6.3 游标对象 43
【实例3.1】向mrsoft数据库中添加books数据表 44
3.6.4 操作数据库 45
【实例3.2】向books数据表添加图书数据 45
3.7 ORM模型 46
3.7.1 ORM简介 46
3.7.2 常用的ORM库 48
3.8 综合案例——从数据库查询并筛选数据 48
3.9 实战练习 49
第2篇 tkinter模块实战篇
第4章 tkinter窗口设计基础
4.1 创建窗口 52
4.2 设置窗口属性 52
【实例4.1】为窗口添加标题 53
4.3 设置窗口位置 53
【实例4.2】设置窗口大小以及位置 54
4.4 tkinter窗口设计的核心 54
4.4.1 Widget组件的分类 54
4.4.2 Widget的公共属性 55
【实例4.3】指定窗口大小以及文字的样式 56
4.4.3 Widget的公共方法 58
4.5 综合案例——充值成功获得道具 58
4.6 实战练习 59
第5章 tkinter布局管理
5.1 pack()方法 61
5.1.1 pack()方法中的参数总览 61
5.1.2 pack()方法中各参数的应用 61
【实例5.1】设置文字的排列方式 61
【实例5.2】仿制“确认退出本窗口”的会话框 63
【实例5.3】指定各组件的顺序 64
5.2 grid()方法 65
5.2.1 grid()方法中参数设置 65
【实例5.4】显示4以内的乘法表 65
5.2.2 rowconfigure()方法和columnconfigure()方法设置组件的缩放比例 67
【实例5.5】实现在窗口的四角中添加4个方块 67
5.3 place()方法 68
5.3.1 x、y、width以及height 69
【实例5.6】布局华容道游戏窗口 69
5.3.2 relx、rely、relwidth和relheight 69
【实例5.7】布局跟随窗口缩放的华容道游戏窗口 70
5.4 综合案例——显示斗兽棋游戏规则 71
5.5 实战练习 72
第6章 tkinter常用组件
6.1 文本类组件 74
6.1.1 Label标签组件 74
【实例6.1】用箭头指示斗兽棋游戏中的规则 74
6.1.2 Entry单行文本框组件 76
【实例6.2】实现登录账号窗口,并且隐藏密码 77
【实例6.3】在窗口中实现两个加数的和 77
6.1.3 Text多行文本框组件 78
【实例6.4】在Text组件中添加图片、文字以及按钮 78
6.2 按钮类组件 81
6.2.1 Button按钮组件 81
【实例6.5】通过按钮添加图片 81
【实例6.6】实现简易密码输入器 82
6.2.2 Radiobutton单选按钮组件 83
【实例6.7】在窗口中显示一则脑筋急转弯 84
6.2.3 Checkbutton复选框组件 85
【实例6.8】实现问卷调查功能 86
6.3 列表类组件 86
6.3.1 Listbox列表框组件 86
【实例6.9】获取列表框的当前选项 87
【实例6.10】实现仿游戏内编辑快捷信号的功能 88
6.3.2 OptionMenu下拉列表组件 89
【实例6.11】在下拉列表中显示歌曲列表 90
【实例6.12】实现逻辑推理题 90
6.3.3 Combobox组合框组件 91
【实例6.13】以管理员的身份查看报表 92
【实例6.14】实现添加日程功能 92
6.4 容器类组件 93
6.4.1 Frame组件 93
【实例6.15】实现鼠标悬停Frame组件上时的样式 94
6.4.2 LabelFrame标签框架组件 95
6.4.3 Toplevel顶层窗口组件 95
【实例6.16】模拟游戏中玩家匹配房间的功能 96
6.4.4 Notebook选项卡组件 97
【实例6.17】仿制Win7系统中设置日期和时间窗口选项卡 97
【实例6.18】实现游戏介绍的功能 98
6.5 综合案例——趣味测试 99
6.6 实战练习 100
第7章 会话框与菜单
7.1 messagebox会话框模块 102
7.1.1 会话框的分类 102
7.1.2 各类会话框的使用 102
【实例7.1】模拟游戏中老玩家回归游戏的欢迎页面 103
【实例7.2】模拟退出游戏警告框 103
【实例7.3】模拟游戏异常时显示的提醒会话框 104
【实例7.4】制作关闭窗口提醒会话框 105
【实例7.5】制作关闭窗口会话框 105
【实例7.6】制作退出应用提醒会话框 106
【实例7.7】模拟打开游戏失败时,是否重启游戏的会话框 107
7.2 菜单组件 107
7.2.1 Menu组件的基本使用 108
【实例7.8】为游戏窗口添加菜单 108
7.2.2 制作二级下拉菜单 108
【实例7.9】为城市列表添加弹出式菜单 110
7.2.3 为菜单添加快捷键 110
【实例7.10】设置窗口的文字样式以及窗口大小 111
7.2.4 制作工具栏 112
【实例7.11】实现猜成语游戏 112
7.3 树形菜单 114
7.3.1 Treeview组件的基本使用 114
【实例7.12】统计某游戏中各角色的类型以及操作难易程度 115
7.3.2 为树形菜单添加图标 115
【实例7.13】树形显示近一周的天气状况 116
7.3.3 为树形菜单添加子菜单 116
7.3.4 菜单项的获取与编辑 117
【实例7.14】统计个人出行记录 118
7.4 综合案例——眼力测试小游戏 121
7.5 实战练习 123
第8章 canvas绘图
8.1 canvas简介 125
【实例8.1】在窗口中创建画布 125
8.2 绘制基本图形 125
8.2.1 绘制线条 125
【实例8.2】使用线条绘制五角星 126
8.2.2 绘制矩形 126
【实例8.3】通过键盘控制正方形移动 127
8.2.3 绘制椭圆 127
【实例8.4】绘制简笔画人脸 128
8.2.4 绘制圆弧与扇形 128
【实例8.5】绘制西瓜形状的雪糕 129
8.2.5 绘制多边形 129
【实例8.6】绘制七巧板拼接的松鼠图案 129
8.2.6 绘制文字 130
【实例8.7】绘制随机颜色和字体的文字 130
8.2.7 绘制图像 131
【实例8.8】用鼠标拖动小鸟,帮小鸟回家 131
8.3 拖动鼠标绘制图形 132
【实例8.9】在窗口中进行书法秀 132
8.4 canvas组件设计动画 133
【实例8.10】实现游戏小猫钓鱼 133
8.5 综合案例——碰壁的小球 135
8.6 实战练习 136
第9章 鼠标键盘事件处理
9.1 鼠标事件 138
9.2 键盘事件 139
【实例9.1】模拟贪吃蛇游戏中通过键盘控制蛇的移动方向 140
9.3 绑定多个事件处理程序 141
9.4 取消事件的绑定 142
【实例9.2】键盘控制方块只能在窗口内移动 142
9.5 综合案例—找颜色眼力测试游戏 143
9.6 实战练习 145
第10章 【案例】滚动大抽奖(tkinter random 文件读写技术实现)
10.1 案例效果预览 146
10.2 案例准备 147
10.3 业务流程 147
10.4 实现过程 148
10.4.1 实现窗口布局 148
10.4.2 实现滚动抽奖 148
10.4.3 实现不重复中奖 149
第11章 【案例】挑战10秒小程序(tkinter random messagebox 计时器实现)
11.1 案例效果预览 150
11.2 案例准备 150
11.3 业务流程 151
11.4 实现过程 151
11.4.1 实现窗口布局 151
11.4.2 判断挑战开始与结束和挑战结果 153
11.4.3 实现计时功能 153
第12章 【案例】音乐机器人(tkinter winsound random实现)
12.1 案例效果预览 154
12.2 案例准备 155
12.3 业务流程 155
12.4 实现过程 155
12.4.1 实现窗口布局 155
12.4.2 实现倒计时 156
12.4.3 实现随机播放音乐 157
第13章 【案例】九宫格切图器(tkinter Pillow实现)
13.1 案例效果预览 158
13.2 案例准备 159
13.3 业务流程 159
13.4 实现过程 160
13.4.1 实现窗口布局 160
13.4.2 预览图片和显示图片路径 161
13.4.3 实现切图 161
13.4.4 保存切好的图片 162
第14章 【案例】无人机编程挑战(tkinter winsound Pillow实现)
14.1 案例效果预览 163
14.2 案例准备 165
14.3 业务流程 165
14.4 实现过程 166
14.4.1 实现登录窗口布局 166
14.4.2 实现挑战任务窗口 167
14.4.3 挑战流程展示 169
14.4.4 执行挑战任务 170
14.4.5 挑战成功窗口展示 172
第15章 【案例】模拟“斗地主”发牌和码牌(tkinter random Pillow实现)
15.1 案例效果预览 174
15.2 案例准备 175
15.3 业务流程 175
15.4 实现过程 175
15.4.1 实现窗口布局 175
15.4.2 玩家叫地主 176
15.4.3 实现发牌功能 177
15.4.4 实现码牌功能 179
15.4.5 实现重新开始 179
第3篇 PyQt5模块实战篇
第16章 PyQt5窗口设计基础
16.1 认识Qt Designer 183
16.1.1 几种常用的窗口类型 183
16.1.2 熟悉Qt Designer窗口区域 184
16.2 使用Qt Designer创建窗口 187
16.2.1 创建主窗口 187
16.2.2 设计主窗口 188
16.2.3 预览窗口效果 188
16.2.4 将.ui文件转换为.py文件 189
16.2.5 运行主窗口 189
16.3 窗口的个性化设置 190
16.3.1 基本属性设置 191
16.3.2 更换窗口的图标 192
16.3.3 设置窗口的背景 193
16.3.4 控制窗口透明度 199
16.3.5 设置窗口样式 199
16.4 信号与槽 201
16.4.1 信号与槽的基本概念 201
16.4.2 编辑信号与槽 201
16.4.3 自定义槽 203
【实例16.1】信号与自定义槽的绑定 203
16.4.4 将自定义槽连接到信号 203
16.5 多窗口设计 203
16.5.1 多窗口的建立 204
【实例16.2】创建并打开多窗口 204
16.5.2 设置启动窗口 205
16.5.3 窗口之间的关联 205
16.6 UI与逻辑代码分离 206
16.7 综合案例——设置窗口在桌面上居中显示 206
16.8 实战练习 207
第17章 PyQt5常用控件
17.1 控件概述 209
17.1.1 认识控件 209
17.1.2 控件的命名规范 210
17.2 文本类控件 210
17.2.1 Label:标签控件 210
17.2.2 LineEdit:单行文本框 212
【实例17.1】包括用户名和密码的登录窗口 213
17.2.3 TextEdit:多行文本框 214
17.2.4 SpinBox:数字选择控件 215
【实例17.2】获取SpinBox中选择的数字 215
17.3 按钮类控件 216
17.3.1 PushButton:按钮 216
【实例17.3】制作登录窗口 217
17.3.2 RadioButton:单选按钮 217
【实例17.4】选择用户登录角色 218
17.3.3 CheckBox:复选框 219
【实例17.5】设置用户权限 219
17.4 选择列表类控件 220
17.4.1 ComboBox:下拉组合框 220
【实例17.6】在下拉列表中选择职位 220
17.4.2 FontComboBox:字体组合框 221
17.4.3 ListWidget:列表 222
【实例17.7】用列表展示编程语言排行榜 223
17.5 容器控件 224
17.5.1 GroupBox:分组框 224
17.5.2 TabWidget:选项卡 224
【实例17.8】选项卡的动态添加和删除 225
17.5.3 ToolBox:工具盒 226
【实例17.9】仿QQ抽屉效果 226
17.6 日期时间类控件 228
17.6.1 日期和(或)时间控件 228
17.6.2 CalendarWidget:日历控件 230
17.7 进度条类控件 231
17.7.1 ProgressBar:进度条 231
【实例17.10】模拟一个跑马灯效果 232
17.7.2 QSlider:滑块 234
17.8 树控件 235
17.8.1 TreeView:树视图 235
【实例17.11】显示系统文件目录 237
17.8.2 TreeWidget:树控件 238
【实例17.12】使用TreeWidget显示树结构 238
17.9 QTimer:计时器 241
17.10 综合案例——双色球彩票选号器 241
17.11 实战练习 243
第18章 菜单、工具栏和状态栏
18.1 菜单 245
18.1.1 菜单基础类 245
18.1.2 添加和删除菜单 246
18.1.3 设置菜单项 247
18.1.4 为菜单设置快捷键 247
18.1.5 为菜单设置图标 247
18.1.6 菜单的功能实现 248
【实例18.1】单击菜单项弹出信息提示框 248
18.2 工具栏 250
18.2.1 工具栏类:QToolBar 250
18.2.2 添加工具栏 251
18.2.3 为工具栏添加图标按钮 251
18.2.4 一次为工具栏添加多个图标按钮 251
18.2.5 向工具栏中添加其他控件 251
18.2.6 设置工具栏按钮的大小 252
18.2.7 工具栏的单击功能实现 252
【实例18.2】获取单击的工具栏按钮 252
18.3 状态栏 254
18.3.1 状态栏类:QStatusBar 254
18.3.2 添加状态栏 254
18.3.3 向状态栏中添加控件 254
18.3.4 在状态栏中显示和删除临时信息 255
18.3.5 在状态栏中实时显示当前时间 256
【实例18.3】在状态栏中实时显示当前时间 256
18.4 综合案例——调用系统常用工具 257
18.5 实战练习 258
第19章 会话框应用
19.1 QMessageBox:会话框 260
19.1.1 会话框的种类 260
19.1.2 会话框的使用方法 260
【实例19.1】弹出5种不同的会话框 261
19.1.3 与会话框进行交互 262
19.2 QFileDialog:文件会话框 262
19.2.1 QFileDialog类概述 262
19.2.2 使用QFileDialog选择文件 263
【实例19.2】选择并显示图片文件 263
19.2.3 使用QFileDialog选择文件夹 265
【实例19.3】以列表显示指定文件夹中的所有文件 265
19.3 QInputDialog:输入会话框 265
19.3.1 QInputDialog概述 265
19.3.2 QInputDialog会话框的使用 267
【实例19.4】设计不同种类的输入框 267
19.4 字体和颜色会话框 269
19.4.1 QFontDialog:字体会话框 269
19.4.2 QColorDialog:颜色会话框 269
19.4.3 字体和颜色会话框的使用 270
【实例19.5】动态设置文本的字体和颜色 270
19.5 综合案例——设计个性签名 272
19.6 实战练习 273
第20章 布局管理
20.1 线性布局 275
20.1.1 VerticalLayout:垂直布局 275
20.1.2 HorizontalLayout:水平布局 276
20.2 GridLayout:网格布局 277
【实例20.1】使用网格布局登录窗口 278
20.3 FormLayout:表单布局 280
【实例20.2】使用表单布局登录窗口 280
20.4 布局管理器的嵌套 282
20.5 综合案例——设计微信聊天窗口 283
20.6 实战练习 284
第21章 PyQt5绘图技术
21.1 PyQt5绘图基础 286
【实例21.1】使用QPainter绘制图形 286
21.2 设置画笔与画刷 287
21.2.1 设置画笔:QPen 287
【实例21.2】展示不同的画笔样式 287
21.2.2 设置画刷:QBrush 288
【实例21.3】展示不同的画刷样式 289
21.3 绘制文本 292
21.3.1 设置字体:QFont 292
21.3.2 绘制文本内容:drawText() 293
21.4 绘制图像 293
【实例21.4】绘制公司Logo 294
21.5 综合案例——绘制带噪点和干扰线的验证码 294
21.6 实战练习 296
第22章 【案例】DIY字符画—PyQt5 sys _thread time PIL numpy实现
22.1 案例效果预览 297
22.2 案例准备 299
22.3 业务流程 299
22.4 实现过程 299
22.4.1 设计主窗体 299
22.4.2 将.ui与.qrc文件转换为.py文件 302
22.4.3 主窗体的显示 302
22.4.4 创建字符画转换文件 303
22.4.5 关联主窗体 304
第23章 【案例】为图片批量添加水印——PyQt5 PIL模块实现
23.1 案例效果预览 306
23.2 案例准备 307
23.3 业务流程 307
23.4 实现过程 308
23.4.1 设计窗体 308
23.4.2 初始化窗体设置 309
23.4.3 加载图片列表 309
23.4.4 设置水印字体 311
23.4.5 选择水印图片 311
23.4.6 选择水印图片保存路径 312
23.4.7 为图片添加水印 313
第24章 【案例】二手房销售预测分析——PyQt5 matplotlib sklearn pandas实现
24.1 案例效果预览 316
24.2 案例准备 318
24.2.1 开发工具准备 318
24.2.2 技术准备 319
24.3 业务流程 322
24.4 实现过程 323
24.4.1 实现图表工具模块 323
24.4.2 清洗数据 325
24.4.3 各区二手房均价分析 326
24.4.4 各区房子数量比例 326
24.4.5 全市二手房装修程度分析 327
24.4.6 热门户型均价分析 327
24.4.7 二手房售价预测 328
第25章 【案例】影视作品可视化分析——PyQt5 pyecharts wordcloud json模块 request实现
25.1 案例效果预览 331
25.2 案例准备 332
25.3 业务流程 332
25.4 主窗体设计 333
25.4.1 实现主窗体 333
25.4.2 查看部分的隐藏与显示 334
25.4.3 下拉列表处理 334
25.5 数据分析与处理 336
25.5.1 获取数据 336
25.5.2 生成全国热力图 337
25.5.3 生成主要城市评论数及平均分 338
25.5.4 生成云图 338
25.6 点击查看显示内容 339
25.6.1 创建显示html页面窗体 339
25.6.2 创建显示图片窗体 340
25.6.3 绑定查询按钮单击事件 340
第26章 【案例】AI智能语音识别——PyQt5 Baidu.AI ffmpeg多媒体工具实现
26.1 案例效果预览 342
26.2 案例准备 343
26.3 业务流程 343
26.4 实现过程 343
26.4.1 准备百度云AI开发模块 343
26.4.2 设计窗体 347
26.4.3 创建语音识别对象 348
26.4.4 将文本合成语音文件 348
26.4.5 将语音识别为文本 349
第27章 【案例】AI图像识别工具——PyQt5 百度API json Base64实现
27.1 案例效果预览 351
27.2 案例准备 353
27.2.1 开发工具准备 353
27.2.2 技术准备 353
27.3 业务流程 355
27.4 实现过程 355
27.4.1 设计窗体 355
27.4.2 添加分类 356
27.4.3 选择识别的图片 356
27.4.4 银行卡图像识别 358
27.4.5 植物图像识别 359
27.4.6 复制识别结果到剪贴板 360
第4篇 项目强化篇
第28章 自制画板——tkinter PIL模块 time实现
28.1 系统需求分析 364
28.1.1 系统概述 364
28.1.2 系统可行性分析 364
28.1.3 功能性需求分析 364
28.2 系统功能设计 365
28.2.1 系统功能结构 365
28.2.2 系统业务流程 365
28.2.3 系统预览 365
28.3 系统开发 366
28.3.1 系统开发环境 366
28.3.2 文件夹组织结构 367
28.4 使用鼠标画图功能实现 367
28.4.1 功能概述 367
28.4.2 实现主窗口 367
28.4.3 实现按下鼠标时,记录鼠标位置 368
28.4.4 实现移动鼠标时,绘制图形 368
28.4.5 实现抬起鼠标时,停止作画 370
28.5 菜单栏实现 370
28.5.1 定义菜单栏 370
28.5.2 菜单栏功能实现 371
28.6 工具栏实现 372
28.6.1 颜色面板设计 372
28.6.2 设置颜色功能 374
28.6.3 绘图工具面板设计 375
28.6.4 绘图工具实现 376
28.6.5 设置线条粗细 377
第29章 Excel数据分析系统——PyQt5 pandas xlrd xlwt matplotlib实现
29.1 系统需求分析 379
29.1.1 系统概述 379
29.1.2 系统可行性分析 379
29.1.3 系统用户角色分配 379
29.1.4 功能性需求分析 379
29.1.5 非功能性需求分析 379
29.2 系统功能设计 380
29.2.1 系统功能结构 380
29.2.2 系统业务流程 380
29.2.3 系统预览 381
29.3 系统开发 384
29.3.1 系统开发环境 384
29.3.2 pandas模块基础应用 384
29.4 窗体UI设计 386
29.4.1 创建窗体 386
29.4.2 工具栏设计 387
29.4.3 其他布局与设置 389
29.4.4 将ui文件转换为py文件 389
29.5 功能代码设计 391
29.5.1 导入Excel文件 391
29.5.2 读取Excel数据 392
29.5.3 设置文件存储路径 392
29.5.4 保存数据到Excel 393
29.5.5 提取列数据 393
29.5.6 定向筛选 393
29.5.7 多表合并 395
29.5.8 多表统计排行 395
29.5.9 生成图表(贡献度分析) 396
第30章 PyQt5程序的打包发布
30.1 安装Pyinstaller模块 400
30.2 打包普通Python程序 400
30.3 打包PyQt5程序 402
30.4 打包资源文件 403
第1章 认识GUI窗体开发
1.1 什么是GUI 3
1.2 常用的Python GUI框架 3
1.2.1 tkinter模块 3
1.2.2 PyQt5模块 4
1.2.3 其他常用GUI开发库 5
第2章 搭建开发环境
2.1 Python的下载与安装 8
2.1.1 下载Python 8
2.1.2 安装Python 10
2.1.3 测试Python是否安装成功 12
2.1.4 Python安装失败的解决方法 12
2.1.5 测试tkinter是否可用 14
2.2 PyCharm开发工具的下载与安装 14
2.2.1 下载PyCharm 14
2.2.2 安装PyCharm 15
2.2.3 启动并配置PyCharm 16
2.3 在PyCharm中配置PyQt5环境 19
2.3.1 安装PyQt5相关模块 19
2.3.2 配置PyQt5设计器及转换工具 21
第3章 数据库编程基础
3.1 MySQL的安装与配置 26
3.1.1 MySQL简介 26
3.1.2 下载MySQL 26
3.1.3 安装MySQL 27
3.1.4 配置MySQL 28
3.2 数据库操作 29
3.2.1 创建数据库 30
3.2.2 查看数据库 30
3.2.3 删除数据库 31
3.3 数据表操作 31
3.3.1 创建数据表 31
3.3.2 查看数据表 32
3.3.3 修改表结构 33
3.3.4 删除数据表 34
3.4 数据类型 35
3.4.1 数字类型 35
3.4.2 字符串类型 36
3.4.3 日期和时间类型 37
3.5 数据的增查改删 37
3.5.1 增加数据 37
3.5.2 查询数据 38
3.5.3 修改数据 41
3.5.4 删除数据 42
3.6 PyMySQL操作数据库 42
3.6.1 安装PyMySQL 42
3.6.2 连接数据库 43
3.6.3 游标对象 43
【实例3.1】向mrsoft数据库中添加books数据表 44
3.6.4 操作数据库 45
【实例3.2】向books数据表添加图书数据 45
3.7 ORM模型 46
3.7.1 ORM简介 46
3.7.2 常用的ORM库 48
3.8 综合案例——从数据库查询并筛选数据 48
3.9 实战练习 49
第2篇 tkinter模块实战篇
第4章 tkinter窗口设计基础
4.1 创建窗口 52
4.2 设置窗口属性 52
【实例4.1】为窗口添加标题 53
4.3 设置窗口位置 53
【实例4.2】设置窗口大小以及位置 54
4.4 tkinter窗口设计的核心 54
4.4.1 Widget组件的分类 54
4.4.2 Widget的公共属性 55
【实例4.3】指定窗口大小以及文字的样式 56
4.4.3 Widget的公共方法 58
4.5 综合案例——充值成功获得道具 58
4.6 实战练习 59
第5章 tkinter布局管理
5.1 pack()方法 61
5.1.1 pack()方法中的参数总览 61
5.1.2 pack()方法中各参数的应用 61
【实例5.1】设置文字的排列方式 61
【实例5.2】仿制“确认退出本窗口”的会话框 63
【实例5.3】指定各组件的顺序 64
5.2 grid()方法 65
5.2.1 grid()方法中参数设置 65
【实例5.4】显示4以内的乘法表 65
5.2.2 rowconfigure()方法和columnconfigure()方法设置组件的缩放比例 67
【实例5.5】实现在窗口的四角中添加4个方块 67
5.3 place()方法 68
5.3.1 x、y、width以及height 69
【实例5.6】布局华容道游戏窗口 69
5.3.2 relx、rely、relwidth和relheight 69
【实例5.7】布局跟随窗口缩放的华容道游戏窗口 70
5.4 综合案例——显示斗兽棋游戏规则 71
5.5 实战练习 72
第6章 tkinter常用组件
6.1 文本类组件 74
6.1.1 Label标签组件 74
【实例6.1】用箭头指示斗兽棋游戏中的规则 74
6.1.2 Entry单行文本框组件 76
【实例6.2】实现登录账号窗口,并且隐藏密码 77
【实例6.3】在窗口中实现两个加数的和 77
6.1.3 Text多行文本框组件 78
【实例6.4】在Text组件中添加图片、文字以及按钮 78
6.2 按钮类组件 81
6.2.1 Button按钮组件 81
【实例6.5】通过按钮添加图片 81
【实例6.6】实现简易密码输入器 82
6.2.2 Radiobutton单选按钮组件 83
【实例6.7】在窗口中显示一则脑筋急转弯 84
6.2.3 Checkbutton复选框组件 85
【实例6.8】实现问卷调查功能 86
6.3 列表类组件 86
6.3.1 Listbox列表框组件 86
【实例6.9】获取列表框的当前选项 87
【实例6.10】实现仿游戏内编辑快捷信号的功能 88
6.3.2 OptionMenu下拉列表组件 89
【实例6.11】在下拉列表中显示歌曲列表 90
【实例6.12】实现逻辑推理题 90
6.3.3 Combobox组合框组件 91
【实例6.13】以管理员的身份查看报表 92
【实例6.14】实现添加日程功能 92
6.4 容器类组件 93
6.4.1 Frame组件 93
【实例6.15】实现鼠标悬停Frame组件上时的样式 94
6.4.2 LabelFrame标签框架组件 95
6.4.3 Toplevel顶层窗口组件 95
【实例6.16】模拟游戏中玩家匹配房间的功能 96
6.4.4 Notebook选项卡组件 97
【实例6.17】仿制Win7系统中设置日期和时间窗口选项卡 97
【实例6.18】实现游戏介绍的功能 98
6.5 综合案例——趣味测试 99
6.6 实战练习 100
第7章 会话框与菜单
7.1 messagebox会话框模块 102
7.1.1 会话框的分类 102
7.1.2 各类会话框的使用 102
【实例7.1】模拟游戏中老玩家回归游戏的欢迎页面 103
【实例7.2】模拟退出游戏警告框 103
【实例7.3】模拟游戏异常时显示的提醒会话框 104
【实例7.4】制作关闭窗口提醒会话框 105
【实例7.5】制作关闭窗口会话框 105
【实例7.6】制作退出应用提醒会话框 106
【实例7.7】模拟打开游戏失败时,是否重启游戏的会话框 107
7.2 菜单组件 107
7.2.1 Menu组件的基本使用 108
【实例7.8】为游戏窗口添加菜单 108
7.2.2 制作二级下拉菜单 108
【实例7.9】为城市列表添加弹出式菜单 110
7.2.3 为菜单添加快捷键 110
【实例7.10】设置窗口的文字样式以及窗口大小 111
7.2.4 制作工具栏 112
【实例7.11】实现猜成语游戏 112
7.3 树形菜单 114
7.3.1 Treeview组件的基本使用 114
【实例7.12】统计某游戏中各角色的类型以及操作难易程度 115
7.3.2 为树形菜单添加图标 115
【实例7.13】树形显示近一周的天气状况 116
7.3.3 为树形菜单添加子菜单 116
7.3.4 菜单项的获取与编辑 117
【实例7.14】统计个人出行记录 118
7.4 综合案例——眼力测试小游戏 121
7.5 实战练习 123
第8章 canvas绘图
8.1 canvas简介 125
【实例8.1】在窗口中创建画布 125
8.2 绘制基本图形 125
8.2.1 绘制线条 125
【实例8.2】使用线条绘制五角星 126
8.2.2 绘制矩形 126
【实例8.3】通过键盘控制正方形移动 127
8.2.3 绘制椭圆 127
【实例8.4】绘制简笔画人脸 128
8.2.4 绘制圆弧与扇形 128
【实例8.5】绘制西瓜形状的雪糕 129
8.2.5 绘制多边形 129
【实例8.6】绘制七巧板拼接的松鼠图案 129
8.2.6 绘制文字 130
【实例8.7】绘制随机颜色和字体的文字 130
8.2.7 绘制图像 131
【实例8.8】用鼠标拖动小鸟,帮小鸟回家 131
8.3 拖动鼠标绘制图形 132
【实例8.9】在窗口中进行书法秀 132
8.4 canvas组件设计动画 133
【实例8.10】实现游戏小猫钓鱼 133
8.5 综合案例——碰壁的小球 135
8.6 实战练习 136
第9章 鼠标键盘事件处理
9.1 鼠标事件 138
9.2 键盘事件 139
【实例9.1】模拟贪吃蛇游戏中通过键盘控制蛇的移动方向 140
9.3 绑定多个事件处理程序 141
9.4 取消事件的绑定 142
【实例9.2】键盘控制方块只能在窗口内移动 142
9.5 综合案例—找颜色眼力测试游戏 143
9.6 实战练习 145
第10章 【案例】滚动大抽奖(tkinter random 文件读写技术实现)
10.1 案例效果预览 146
10.2 案例准备 147
10.3 业务流程 147
10.4 实现过程 148
10.4.1 实现窗口布局 148
10.4.2 实现滚动抽奖 148
10.4.3 实现不重复中奖 149
第11章 【案例】挑战10秒小程序(tkinter random messagebox 计时器实现)
11.1 案例效果预览 150
11.2 案例准备 150
11.3 业务流程 151
11.4 实现过程 151
11.4.1 实现窗口布局 151
11.4.2 判断挑战开始与结束和挑战结果 153
11.4.3 实现计时功能 153
第12章 【案例】音乐机器人(tkinter winsound random实现)
12.1 案例效果预览 154
12.2 案例准备 155
12.3 业务流程 155
12.4 实现过程 155
12.4.1 实现窗口布局 155
12.4.2 实现倒计时 156
12.4.3 实现随机播放音乐 157
第13章 【案例】九宫格切图器(tkinter Pillow实现)
13.1 案例效果预览 158
13.2 案例准备 159
13.3 业务流程 159
13.4 实现过程 160
13.4.1 实现窗口布局 160
13.4.2 预览图片和显示图片路径 161
13.4.3 实现切图 161
13.4.4 保存切好的图片 162
第14章 【案例】无人机编程挑战(tkinter winsound Pillow实现)
14.1 案例效果预览 163
14.2 案例准备 165
14.3 业务流程 165
14.4 实现过程 166
14.4.1 实现登录窗口布局 166
14.4.2 实现挑战任务窗口 167
14.4.3 挑战流程展示 169
14.4.4 执行挑战任务 170
14.4.5 挑战成功窗口展示 172
第15章 【案例】模拟“斗地主”发牌和码牌(tkinter random Pillow实现)
15.1 案例效果预览 174
15.2 案例准备 175
15.3 业务流程 175
15.4 实现过程 175
15.4.1 实现窗口布局 175
15.4.2 玩家叫地主 176
15.4.3 实现发牌功能 177
15.4.4 实现码牌功能 179
15.4.5 实现重新开始 179
第3篇 PyQt5模块实战篇
第16章 PyQt5窗口设计基础
16.1 认识Qt Designer 183
16.1.1 几种常用的窗口类型 183
16.1.2 熟悉Qt Designer窗口区域 184
16.2 使用Qt Designer创建窗口 187
16.2.1 创建主窗口 187
16.2.2 设计主窗口 188
16.2.3 预览窗口效果 188
16.2.4 将.ui文件转换为.py文件 189
16.2.5 运行主窗口 189
16.3 窗口的个性化设置 190
16.3.1 基本属性设置 191
16.3.2 更换窗口的图标 192
16.3.3 设置窗口的背景 193
16.3.4 控制窗口透明度 199
16.3.5 设置窗口样式 199
16.4 信号与槽 201
16.4.1 信号与槽的基本概念 201
16.4.2 编辑信号与槽 201
16.4.3 自定义槽 203
【实例16.1】信号与自定义槽的绑定 203
16.4.4 将自定义槽连接到信号 203
16.5 多窗口设计 203
16.5.1 多窗口的建立 204
【实例16.2】创建并打开多窗口 204
16.5.2 设置启动窗口 205
16.5.3 窗口之间的关联 205
16.6 UI与逻辑代码分离 206
16.7 综合案例——设置窗口在桌面上居中显示 206
16.8 实战练习 207
第17章 PyQt5常用控件
17.1 控件概述 209
17.1.1 认识控件 209
17.1.2 控件的命名规范 210
17.2 文本类控件 210
17.2.1 Label:标签控件 210
17.2.2 LineEdit:单行文本框 212
【实例17.1】包括用户名和密码的登录窗口 213
17.2.3 TextEdit:多行文本框 214
17.2.4 SpinBox:数字选择控件 215
【实例17.2】获取SpinBox中选择的数字 215
17.3 按钮类控件 216
17.3.1 PushButton:按钮 216
【实例17.3】制作登录窗口 217
17.3.2 RadioButton:单选按钮 217
【实例17.4】选择用户登录角色 218
17.3.3 CheckBox:复选框 219
【实例17.5】设置用户权限 219
17.4 选择列表类控件 220
17.4.1 ComboBox:下拉组合框 220
【实例17.6】在下拉列表中选择职位 220
17.4.2 FontComboBox:字体组合框 221
17.4.3 ListWidget:列表 222
【实例17.7】用列表展示编程语言排行榜 223
17.5 容器控件 224
17.5.1 GroupBox:分组框 224
17.5.2 TabWidget:选项卡 224
【实例17.8】选项卡的动态添加和删除 225
17.5.3 ToolBox:工具盒 226
【实例17.9】仿QQ抽屉效果 226
17.6 日期时间类控件 228
17.6.1 日期和(或)时间控件 228
17.6.2 CalendarWidget:日历控件 230
17.7 进度条类控件 231
17.7.1 ProgressBar:进度条 231
【实例17.10】模拟一个跑马灯效果 232
17.7.2 QSlider:滑块 234
17.8 树控件 235
17.8.1 TreeView:树视图 235
【实例17.11】显示系统文件目录 237
17.8.2 TreeWidget:树控件 238
【实例17.12】使用TreeWidget显示树结构 238
17.9 QTimer:计时器 241
17.10 综合案例——双色球彩票选号器 241
17.11 实战练习 243
第18章 菜单、工具栏和状态栏
18.1 菜单 245
18.1.1 菜单基础类 245
18.1.2 添加和删除菜单 246
18.1.3 设置菜单项 247
18.1.4 为菜单设置快捷键 247
18.1.5 为菜单设置图标 247
18.1.6 菜单的功能实现 248
【实例18.1】单击菜单项弹出信息提示框 248
18.2 工具栏 250
18.2.1 工具栏类:QToolBar 250
18.2.2 添加工具栏 251
18.2.3 为工具栏添加图标按钮 251
18.2.4 一次为工具栏添加多个图标按钮 251
18.2.5 向工具栏中添加其他控件 251
18.2.6 设置工具栏按钮的大小 252
18.2.7 工具栏的单击功能实现 252
【实例18.2】获取单击的工具栏按钮 252
18.3 状态栏 254
18.3.1 状态栏类:QStatusBar 254
18.3.2 添加状态栏 254
18.3.3 向状态栏中添加控件 254
18.3.4 在状态栏中显示和删除临时信息 255
18.3.5 在状态栏中实时显示当前时间 256
【实例18.3】在状态栏中实时显示当前时间 256
18.4 综合案例——调用系统常用工具 257
18.5 实战练习 258
第19章 会话框应用
19.1 QMessageBox:会话框 260
19.1.1 会话框的种类 260
19.1.2 会话框的使用方法 260
【实例19.1】弹出5种不同的会话框 261
19.1.3 与会话框进行交互 262
19.2 QFileDialog:文件会话框 262
19.2.1 QFileDialog类概述 262
19.2.2 使用QFileDialog选择文件 263
【实例19.2】选择并显示图片文件 263
19.2.3 使用QFileDialog选择文件夹 265
【实例19.3】以列表显示指定文件夹中的所有文件 265
19.3 QInputDialog:输入会话框 265
19.3.1 QInputDialog概述 265
19.3.2 QInputDialog会话框的使用 267
【实例19.4】设计不同种类的输入框 267
19.4 字体和颜色会话框 269
19.4.1 QFontDialog:字体会话框 269
19.4.2 QColorDialog:颜色会话框 269
19.4.3 字体和颜色会话框的使用 270
【实例19.5】动态设置文本的字体和颜色 270
19.5 综合案例——设计个性签名 272
19.6 实战练习 273
第20章 布局管理
20.1 线性布局 275
20.1.1 VerticalLayout:垂直布局 275
20.1.2 HorizontalLayout:水平布局 276
20.2 GridLayout:网格布局 277
【实例20.1】使用网格布局登录窗口 278
20.3 FormLayout:表单布局 280
【实例20.2】使用表单布局登录窗口 280
20.4 布局管理器的嵌套 282
20.5 综合案例——设计微信聊天窗口 283
20.6 实战练习 284
第21章 PyQt5绘图技术
21.1 PyQt5绘图基础 286
【实例21.1】使用QPainter绘制图形 286
21.2 设置画笔与画刷 287
21.2.1 设置画笔:QPen 287
【实例21.2】展示不同的画笔样式 287
21.2.2 设置画刷:QBrush 288
【实例21.3】展示不同的画刷样式 289
21.3 绘制文本 292
21.3.1 设置字体:QFont 292
21.3.2 绘制文本内容:drawText() 293
21.4 绘制图像 293
【实例21.4】绘制公司Logo 294
21.5 综合案例——绘制带噪点和干扰线的验证码 294
21.6 实战练习 296
第22章 【案例】DIY字符画—PyQt5 sys _thread time PIL numpy实现
22.1 案例效果预览 297
22.2 案例准备 299
22.3 业务流程 299
22.4 实现过程 299
22.4.1 设计主窗体 299
22.4.2 将.ui与.qrc文件转换为.py文件 302
22.4.3 主窗体的显示 302
22.4.4 创建字符画转换文件 303
22.4.5 关联主窗体 304
第23章 【案例】为图片批量添加水印——PyQt5 PIL模块实现
23.1 案例效果预览 306
23.2 案例准备 307
23.3 业务流程 307
23.4 实现过程 308
23.4.1 设计窗体 308
23.4.2 初始化窗体设置 309
23.4.3 加载图片列表 309
23.4.4 设置水印字体 311
23.4.5 选择水印图片 311
23.4.6 选择水印图片保存路径 312
23.4.7 为图片添加水印 313
第24章 【案例】二手房销售预测分析——PyQt5 matplotlib sklearn pandas实现
24.1 案例效果预览 316
24.2 案例准备 318
24.2.1 开发工具准备 318
24.2.2 技术准备 319
24.3 业务流程 322
24.4 实现过程 323
24.4.1 实现图表工具模块 323
24.4.2 清洗数据 325
24.4.3 各区二手房均价分析 326
24.4.4 各区房子数量比例 326
24.4.5 全市二手房装修程度分析 327
24.4.6 热门户型均价分析 327
24.4.7 二手房售价预测 328
第25章 【案例】影视作品可视化分析——PyQt5 pyecharts wordcloud json模块 request实现
25.1 案例效果预览 331
25.2 案例准备 332
25.3 业务流程 332
25.4 主窗体设计 333
25.4.1 实现主窗体 333
25.4.2 查看部分的隐藏与显示 334
25.4.3 下拉列表处理 334
25.5 数据分析与处理 336
25.5.1 获取数据 336
25.5.2 生成全国热力图 337
25.5.3 生成主要城市评论数及平均分 338
25.5.4 生成云图 338
25.6 点击查看显示内容 339
25.6.1 创建显示html页面窗体 339
25.6.2 创建显示图片窗体 340
25.6.3 绑定查询按钮单击事件 340
第26章 【案例】AI智能语音识别——PyQt5 Baidu.AI ffmpeg多媒体工具实现
26.1 案例效果预览 342
26.2 案例准备 343
26.3 业务流程 343
26.4 实现过程 343
26.4.1 准备百度云AI开发模块 343
26.4.2 设计窗体 347
26.4.3 创建语音识别对象 348
26.4.4 将文本合成语音文件 348
26.4.5 将语音识别为文本 349
第27章 【案例】AI图像识别工具——PyQt5 百度API json Base64实现
27.1 案例效果预览 351
27.2 案例准备 353
27.2.1 开发工具准备 353
27.2.2 技术准备 353
27.3 业务流程 355
27.4 实现过程 355
27.4.1 设计窗体 355
27.4.2 添加分类 356
27.4.3 选择识别的图片 356
27.4.4 银行卡图像识别 358
27.4.5 植物图像识别 359
27.4.6 复制识别结果到剪贴板 360
第4篇 项目强化篇
第28章 自制画板——tkinter PIL模块 time实现
28.1 系统需求分析 364
28.1.1 系统概述 364
28.1.2 系统可行性分析 364
28.1.3 功能性需求分析 364
28.2 系统功能设计 365
28.2.1 系统功能结构 365
28.2.2 系统业务流程 365
28.2.3 系统预览 365
28.3 系统开发 366
28.3.1 系统开发环境 366
28.3.2 文件夹组织结构 367
28.4 使用鼠标画图功能实现 367
28.4.1 功能概述 367
28.4.2 实现主窗口 367
28.4.3 实现按下鼠标时,记录鼠标位置 368
28.4.4 实现移动鼠标时,绘制图形 368
28.4.5 实现抬起鼠标时,停止作画 370
28.5 菜单栏实现 370
28.5.1 定义菜单栏 370
28.5.2 菜单栏功能实现 371
28.6 工具栏实现 372
28.6.1 颜色面板设计 372
28.6.2 设置颜色功能 374
28.6.3 绘图工具面板设计 375
28.6.4 绘图工具实现 376
28.6.5 设置线条粗细 377
第29章 Excel数据分析系统——PyQt5 pandas xlrd xlwt matplotlib实现
29.1 系统需求分析 379
29.1.1 系统概述 379
29.1.2 系统可行性分析 379
29.1.3 系统用户角色分配 379
29.1.4 功能性需求分析 379
29.1.5 非功能性需求分析 379
29.2 系统功能设计 380
29.2.1 系统功能结构 380
29.2.2 系统业务流程 380
29.2.3 系统预览 381
29.3 系统开发 384
29.3.1 系统开发环境 384
29.3.2 pandas模块基础应用 384
29.4 窗体UI设计 386
29.4.1 创建窗体 386
29.4.2 工具栏设计 387
29.4.3 其他布局与设置 389
29.4.4 将ui文件转换为py文件 389
29.5 功能代码设计 391
29.5.1 导入Excel文件 391
29.5.2 读取Excel数据 392
29.5.3 设置文件存储路径 392
29.5.4 保存数据到Excel 393
29.5.5 提取列数据 393
29.5.6 定向筛选 393
29.5.7 多表合并 395
29.5.8 多表统计排行 395
29.5.9 生成图表(贡献度分析) 396
第30章 PyQt5程序的打包发布
30.1 安装Pyinstaller模块 400
30.2 打包普通Python程序 400
30.3 打包PyQt5程序 402
30.4 打包资源文件 403
猜您喜欢