从零开始用 PyQt5 开发库存管理系统的过程中,遇到了不少坑。这里记录一下信号槽机制、多线程处理和数据库事务方面的实践经验。
信号槽机制是 PyQt5 的核心。在开发库存管理系统时,我用信号槽实现了物料列表和详情面板的联动——当用户在列表中选中某条物料时,发出 materialSelected 信号,详情面板接收信号后自动刷新内容。
多线程是另一个关键点。Excel 批量导入如果放在主线程执行,会导致界面完全冻结。我使用 QThread 把导入逻辑放到工作线程中,通过自定义信号向主线程报告进度,用户体验提升非常明显。
数据库事务方面,入库操作需要同时写入入库记录表和更新物料表的库存数量,这两步必须在同一事务中完成。如果其中一步失败,必须回滚整个事务,否则就会出现数据不一致的问题。