Pyqt5开发总结
需求描述
-
开发一个桌面软件符合以下的功能:
-
用户任意选择薪资文件
-
用户任意填写邮箱信息
-
将用户选择的薪资信息与配置好的人员邮箱信息匹配并生成个人的薪资条
-
给公司的员工发送属于个人的薪资文件
工具选择
Python
QT
Python第三方依赖
PyQt5
xlutils
xlrd
pyinstaller
sqlalchemy
开发总结
UI设计
- 使用qtdesigner设计UI更加方便快捷,而且设计完成以后可以直接导出成为py文件,提供给逻辑代码调用。
- 设计UI的过程中,将控件按照功能或者状态合理得放在不同的frame区,这样方便程序控制UI的更新或隐藏时,直接对整个区域操作而不是对每个按钮或者输入框。
- 对控件的命名一定要自定义有意义的名称,而且定义好了以后尽量不去做修改,这样以后新增功能变更UI 的时候就不会影响到原有的功能代码。
代码设计
- 主线程不能做与UI无关的工作!将所有的业务逻辑都放到子线程里面去执行,然后将结果通过信号与槽反馈给主线程,再通过UI反馈给用户。
- 积极使用信号与槽机制去交互线程之间的数据。
- 多线程操作有两种方式,一种是Python原生的threading,一种是QT附带的Qthread,貌似在网上查阅得知,使用Qthread如果强行释放资源时线程仍在运行,会导致程序崩溃的现象(我确实在开发过程中遇到这种程序突然崩溃的现象,但还未去证实是否与Qthread有关,所以用threading去进行子线程操作也挺好的)
踩到的坑
- 因为软件需要频繁操作Excel文件,会出现使用xlutils去复制xlrd打开的文件以后,没有通过release_resources进行释放资源,导致后续的线程都无法保存这个复制后的文件。