趁着假期哪里也去不了把PyQt5的相关的知识点全部都梳理了一遍,趁着知识点还热乎,赶紧做个小项目实战一下。
这个项目包含开发一个桌面应用普遍需要的一些知识点,可以说把这个项目理解透,那么桌面端软件开发需求来了就都能做了,剩下的无非就是把界面做的更好看一点,把交互做到让各方满意,这些就是靠时间慢慢磨,但从功能上来说应该是都能下手做了。
先不说代码,无论开发什么应用类的项目,单从设计上来说,都需要包含界面设计,后台逻辑以及数据持久化三部分,好比MVC(Model–View–Controller),Python的Django里面有MVT(Model–View–Template),我们开发的时候也可以遵从这种软件架构模型,以下为各模块用到的关键技术点:
- 界面设计:Qt Designer
- 后台逻辑:需要将耗时长的放到QThread里面,避免界面卡死
- 数据持久化:使用SQLite
- 软硬件交互:串口
以下为简短需求介绍:
图书管理系统需求文档
- 查询页面:可以查询图书馆所有的书籍信息,包含编号,书名以及在借状态
- 登陆页面:有管理员和用户两种角色,管理员通过账号密码登陆,用户通过硬件刷卡登陆(模拟借书证,学生证刷卡借书的动作)
- 管理员页面:显示管理员信息,可以增删改查图书库里的书籍
- 用户信息:显示用户信息,显示用户借书信息,可以借书操作
以下为详细开发过程:
界面设计
使用Qt Designer设计界面,包含需求中的4个页面,这里有几个比较重要的实现的知识点。
- 点击左侧导航栏右侧页面跟着发生变化,是用QListWidget和QStackedWidget开发的
- 在页面布局的时候,为了防止控件不可控的被放大缩小改变位置,可以先把控件放到一个widget里
后台逻辑
查询页面:查询并显示书本的编号,书名,在借状态,用到的技术点是把查询的关键字传给QThread,执行完数据库操作后,再把结果通过信号的方式给界面,更新TableWidget控件的内容
登陆页面:管理员登陆,用到的技术点是输入账号密码后,发给QThread,在数据库中查询进行匹配,如果有则登陆成功,跳转到管理员详情页
用户登陆:用户需要刷卡登陆,通信的方式取决于外围设备的协议,这里选择通过串口通信,图示为做的一个学生证,包含芯片同软件进行交互。
登陆后跳转到用户详情页,显示用户信息,在借书本,以及进行借书操作。
用到的技术点是通过串口和外围设备进行通信。
通过这个项目,巩固了界面设计,后台逻辑和界面更新的分离,数据库操作,软件和硬件的交互,这四个知识点弄通后,以后任何的桌面软件类开发项目都ok了。
码代码不易,需要源码的私信留言。