certflow.controllers.printer_controller module¶
打印机控制器
提供合格证打印的异步控制,封装 PrintWorker 线程和 PrinterController 信号机制。 通过 Qt 信号槽模式实现非阻塞打印,支持打印机切换和状态查询。 支持 PrintConfig 聚合配置透传。
- Signals:
printer_changed: 打印机切换时发出,携带新打印机名称 status_changed: 打印状态变化时发出,携带状态描述文本 print_completed: 打印完成时发出,携带 (成功标志, 消息)
- class certflow.controllers.printer_controller.PrintWorker(service, data, copies=1, config=None)[源代码]¶
基类:
QThread打印工作线程
将打印操作放在独立线程中执行,避免阻塞 UI 主线程。 支持两种模式: - 传入 PrintConfig:使用策略模式(ESC/P-K 或 GDI) - 不传 PrintConfig:回退到 PrinterService.print_certificate() 文本模式
- Signals:
progress: 打印进度信号 (current, total) finished: 打印完成信号 (success: bool, message: str)
- 参数:
service (PrinterService)
copies (int)
config (RuntimePrintConfig | None)
- progress¶
打印进度信号 (current, total)
- finished¶
打印完成信号 (success, message)
- staticMetaObject = PySide6.QtCore.QMetaObject("PrintWorker" inherits "QThread": Methods: #12 type=Signal, signature=progress(int,int), parameters=int, int #13 type=Signal, signature=finished(bool,QString), parameters=bool, QString )¶
- class certflow.controllers.printer_controller.PrinterController[源代码]¶
基类:
QObject打印机控制器
管理打印机选择、打印任务调度和状态监控。 通过 Qt 信号槽实现 UI 与打印逻辑的解耦。 支持 PrintConfig 聚合配置透传。
- _printer_name¶
当前选择的打印机名称,None 表示未初始化
- _service¶
打印机服务实例(惰性创建,按名称缓存)
- _print_worker¶
当前活动的打印工作线程
- Signals:
printer_changed: 打印机名称变更信号 status_changed: 打印状态文本信号 print_completed: 打印完成信号 (success, message)
- printer_changed¶
打印机切换信号,携带新打印机名称
- status_changed¶
状态变更信号,携带状态描述文本
- print_completed¶
bool, message: str)
- Type:
打印完成信号 (success
- set_printer(printer_name)[源代码]¶
设置当前打印机并发出变更信号
- 参数:
printer_name (str) -- 目标打印机名称
- 返回:
None
- 返回类型:
None
- print_certificate(data, copies=1, config=None)[源代码]¶
异步打印合格证(在独立线程中执行)
- 参数:
data (dict[str, Any]) -- 打印数据字典,包含 product_name/product_model/dn/pn 等字段
copies (int) -- 打印份数,默认为 1
config (RuntimePrintConfig | None) -- RuntimePrintConfig 聚合配置,传入时使用策略模式打印; 为 None 时回退到文本模式
- 返回:
None
- 返回类型:
None
示例
>>> controller = PrinterController() >>> controller.set_printer("HP LaserJet") >>> controller.print_certificate( ... {"product_name": "闸阀", "product_model": "Z41H-16C"}, ... copies=2, ... )
- static get_issue_date_source()[源代码]¶
获取出厂日期源配置(委托
cert_numbering_policy.get_issue_date_source)。- 返回类型:
- static parse_product_code_meta(product_code)[源代码]¶
解析产品编码元信息(委托
cert_numbering_policy.parse_product_code_meta)。
- staticMetaObject = PySide6.QtCore.QMetaObject("PrinterController" inherits "QObject": Methods: #4 type=Signal, signature=printer_changed(QString), parameters=QString #5 type=Signal, signature=status_changed(QString), parameters=QString #6 type=Signal, signature=print_completed(bool,QString), parameters=bool, QString )¶