《Python GUI开发手册:基础·实战·强化》是由化学工业出版社出版的一本关于Python方面的书籍,作者是明日科技,主要介绍了关于Python、GUI、开发手册方面的知识内容,目前在Python类书籍综合评分为:8.2分。
书籍介绍
自学GUI开发技术,python GUI开发全技能教学,学懂方法步骤代码,案例丰富典型、项目实战
编辑推荐
1.本书内容极其丰富、文字通俗易懂,适合入门并得到迅速提高。
2.本书详细讲解关键框架tkinter和PyQt5。
3.本书案例丰富、项目典型,步骤详细,手把手教学,查阅方便。
4.本书配备相关代码资源,可直接调试。
5.本书配备工程师宝典APP电子书(纸电同步),讲课视频,资源库、社区技术支持、QQ在线等服务。
内容简介
《Python GUI开发手册:基础·实战·强化》是“计算机科学与技术手册系列”图书之一,该系列图书内容全面,以理论联系实际、能学到并做到为宗旨,以技术为核心,以案例为辅助,引领读者全面学习基础技术、代码编写方法和具体应用项目。旨在为想要进入相应领域或者已经在该领域深耕多年的技术人员提供新而全的技术性内容及案例。
本书以Python语言为载体讲解GUI开发,分为4篇,分别是:基础篇、tkinter模块实战篇、PyQt5模块实战篇和项目强化篇,共30章。内容由浅入深,循序渐进,使读者在打好基础的同时逐步提升技能。本书内容包含了GUI开发的基础知识和数据库相关知识,以较大篇幅讲解了目前应用较广的两个开发模块(tkinter和PyQt5)和相应的12个关键案例,同时配备了两个大型项目,使读者能够同步做出产品,达到学到并且做到的目的。
本书适合Python GUI开发从业者、Python 开发程序员、Python 开发以及人工智能的爱好者阅读,也可供高校计算机相关专业师生参考。
目录
- 第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