# resume_deliver_tool **Repository Path**: pywcc/resume_deliver_tool ## Basic Information - **Project Name**: resume_deliver_tool - **Description**: 基于pyQt5、openpyxl的工作岗位查询工具 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-06 - **Last Updated**: 2024-12-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # resume_deliver_tool #### 介绍 基于pyQt5、openpyxl的工作岗位查询工具 #### 工具部分功能 ![主页](https://images.gitee.com/uploads/images/2021/0510/000215_ad526f8b_5015722.png "deliver_params.png") #### 系统说明 ##### 1.开发环境:windows ```python # 虚拟环境 pip install virtuelenv pip install makevirtualenvwrapper # 创建虚拟环境(windows虚拟环境就是项目下的venv目录下) makevitualenvwrapper 虚拟环境名 -p python3 # 切换虚拟环境 workon # 查询虚拟环境list workon 虚拟环境名 # 安装python第三方包 pip install requirements.txt -i http://tuna.stinghua.edu.cn/simple ``` ##### 2.主要功能及其实现 ```python # 所有Qt界面:pyQt5 # 中文文档:https://github.com/maicss/PyQt5-Chinese-tutorial/blob/master/SUMMARY.md # 爬虫:requests + lxml # 数据存储读写:openpyxl ``` ##### 3. 开发问题 ###### 3.0 开发文件结构 ```python # 主文件:resume_deliver_tool.py 所有窗口创建并生效文件 # 后缀名带有ui的文件为各子窗口样式设置文件:如spider_params_ui.py # 爬虫相关文件:job_info_spider.py 用于处理岗位信息爬取 # 设置文件:setting.py 用于常量定义 ``` ###### 3.1 `QMainWindow`与`QWidget`,`QDialog`的关系 ```python QMainWindow用于工具主界面的创建,创建窗口时由主窗口继承,只能有一个; QWidget用于工具二级界面的创建,创建窗口时由二级窗口继承; QDialog主要创建空白窗口,窗口功能基于QDialog()初始化创建 # 参考工具的主窗口和爬虫参数设置窗口 ``` ###### 3.2 `table`细节(表头文字设置,单元格行高列宽,背景设置, 单元格操作,文本居中),按钮事件,主页面居中设置 ```python # table展示设置参考工具岗位信息窗口的设置 # 按钮事件,由创建按钮对象之后,关联事件函数。butom名.click.connect(事件函数名) ``` ###### 3.3 二级子弹窗设置(自定义窗口,自带窗口),图标设置 ```python # 自定义窗口和图标设置参考爬虫参数设置界面 # 二级窗口务必继承自Qwidget,其他定义无不同。需要在主文件resume_deliver_tool.py的中主窗口函数中__init__方法中创建子窗口ui对象。 # 主文件中定义方法调用子窗口ui对象的show()方法 ``` ###### 3.4 `table`窗口中的label提示中文处理,使用`buton名.setText(文字)` ###### 3.5 打包`exe`文件:`pyinstaller -F -w resume_deliver_tool.py` 注意:`-w`主要针对不产生命令行窗口 `-i` 指定`exe`的图标 `-n` 指定`exe工具`名称 ###### 3.6 `QLabel`(文本大小,样式,图片,超链接,动画,*加红而文本不变), `QComboBox` (字体设置,`addItem`)视具体应用场景 ###### 3.7 爬虫`requests`, 提取数据:`jsonppath`、`beautifulsoup`、`lxml`(匹配空值问题):参照`job_info_spider.py` ###### 3.8 关闭主窗口同时关闭子窗口。主窗口重写`closeEvent`方法,添加`sys.exit(0)` ###### 3.9 布局:用于定位窗口中元素的位置 ```python # 绝对定位:使用屏幕左上角为原点,使用元素对象.move(x坐标,y坐标) # 盒布局: 水平布局QHBoxLayout + 垂直布局QVBoxLayout # 创建水平布局对象 hbox = QHBoxLayout() hbox.addStretch(1) # 增加弹性空间 hbox.addWidget(按钮对象名) # 布局添加按钮对象 hbox.addLayout(布局对象名) # 布局嵌套 # 栅格布局:QGridLayout,可指定按钮对象的行列位置 # 创建栅格布局对象 grid = QGridLayout() self.setLayout(grid) grid.addWidget(button对象名,(x,y坐标list)) # 栅格布局添加元素 ```