certflow.controllers package¶
Submodules¶
- certflow.controllers.base_controller module
BaseControllerBaseController.db_managerBaseController.sessionBaseController._owns_sessionBaseController.set_shared_db_manager()BaseController.get_shared_db_manager()BaseController.clear_shared_db_manager()BaseController.__enter__()BaseController.__exit__()BaseController.close()BaseController.commit()BaseController.rollback()BaseController.get_session()BaseController.get_service()BaseController.resolve_dict_csv_path()BaseController.refresh_session()BaseController.is_session_active()
- certflow.controllers.bom_material_controller module
BomMaterialControllerBomMaterialController.search()BomMaterialController.list_all()BomMaterialController.get_by_id()BomMaterialController.distinct_production_order_nos()BomMaterialController.source_summary()BomMaterialController.update_material_grade()BomMaterialController.auto_fill()BomMaterialController.material_source_choices()BomMaterialController.scan_and_import()
- certflow.controllers.caliber_mapping_controller module
- certflow.controllers.certificate_controller module
CertificateControllerCertificateController.certificate_cacheCertificateController.generate_certificates_for_sale_plans()CertificateController.get_history_last_values()CertificateController.get_next_serial()CertificateController.sync_serial_counter()CertificateController.batch_print_certificates()CertificateController.get_certificates_by_status()CertificateController.get_certificates_by_product()CertificateController.mark_as_engraved()CertificateController.get_print_statistics()CertificateController.get_sale_plan_by_id()CertificateController.get_certificate_by_unique_key()CertificateController.render_certificate_bytes()CertificateController.auto_save_log()CertificateController.get_certificate_by_id()CertificateController.get_job_certificate_id()CertificateController.save_correction()CertificateController.get_ungenerated_sale_plans()CertificateController.get_all_certificates()
- certflow.controllers.correction_queue_controller module
CorrectionQueueControllerCorrectionQueueController.list_flagged()CorrectionQueueController.list_quarantined()CorrectionQueueController.quarantine_stats()CorrectionQueueController.get_sale_plan()CorrectionQueueController.get_quarantine()CorrectionQueueController.correct_sale_plan()CorrectionQueueController.release_quarantine()CorrectionQueueController.delete_quarantine()CorrectionQueueController.refresh()
- certflow.controllers.history_controller module
- certflow.controllers.import_controller module
ImportControllerImportController.run_import()ImportController.apply_range_filter()ImportController.read_and_clean_sheet()ImportController.detect_header_row()ImportController.extract_year_from_filename()ImportController.normalize_record_for_key()ImportController.generate_unique_key()ImportController.generate_change_signature()ImportController.find_existing_by_unique_key()
- certflow.controllers.material_grade_controller module
MaterialGradeControllerMaterialGradeController.list_all()MaterialGradeController.get_by_id()MaterialGradeController.get_grades_by_category()MaterialGradeController.get_data_quality_summary()MaterialGradeController.create()MaterialGradeController.update()MaterialGradeController.delete()MaterialGradeController.seed_common_grades()MaterialGradeController.export_csv()MaterialGradeController.import_csv()MaterialGradeController.refresh()
- certflow.controllers.model_param_mapping_controller module
ModelParamMappingControllerModelParamMappingController.list_all()ModelParamMappingController.get_by_id()ModelParamMappingController.get_by_model()ModelParamMappingController.create()ModelParamMappingController.update()ModelParamMappingController.delete()ModelParamMappingController.seed_common_models()ModelParamMappingController.upsert_for_learnback()ModelParamMappingController.export_csv()ModelParamMappingController.import_csv()
- certflow.controllers.output_controller module
- certflow.controllers.print_queue_controller module
QueueWorkerPrintQueueControllerPrintQueueController._session_factoryPrintQueueController._printer_namePrintQueueController._print_funcPrintQueueController._workerPrintQueueController._pausedPrintQueueController._cancel_job_idPrintQueueController.queue_changedPrintQueueController.job_startedPrintQueueController.job_finishedPrintQueueController.status_changedPrintQueueController.progress_updatedPrintQueueController.enqueue()PrintQueueController.enqueue_certificates()PrintQueueController.start()PrintQueueController.stop()PrintQueueController.pause()PrintQueueController.resume()PrintQueueController.is_paused()PrintQueueController.is_running()PrintQueueController.cancel_job()PrintQueueController.move_top()PrintQueueController.move_up()PrintQueueController.clear_finished()PrintQueueController.recover()PrintQueueController.list_jobs()PrintQueueController.staticMetaObjectPrintQueueController.count_pending()PrintQueueController.set_printer()PrintQueueController.status_label()PrintQueueController.status_color()
- certflow.controllers.printer_controller module
PrintWorkerPrinterControllerPrinterController._printer_namePrinterController._servicePrinterController._print_workerPrinterController.printer_changedPrinterController.status_changedPrinterController.print_completedPrinterController.current_printerPrinterController.set_printer()PrinterController.get_printers()PrinterController.print_certificate()PrinterController.get_printer_status()PrinterController.family_of()PrinterController.get_field_formatter()PrinterController.get_issue_date_source()PrinterController.parse_product_code_meta()PrinterController.staticMetaObjectPrinterController.validate_pn_text()PrinterController.run_guard()PrinterController.get_template_manager()PrinterController.default_inspector_id()
- certflow.controllers.query_controller module
FieldValuesWorkerQueryControllerQueryController.data_updatedQueryController.operation_completedQueryController.operation_failedQueryController.field_values_loadedQueryController.field_values_load_failedQueryController.query()QueryController.get_field_values()QueryController.get_distinct_combos()QueryController.load_field_values_async()QueryController.get_records_by_ids()QueryController.get_statistics()QueryController.delete_records()QueryController.delete_with_certificates()QueryController.check_certificate_exists()QueryController.batch_update_field()QueryController.batch_update_production_status()QueryController.export_selected()QueryController.archive_to_shipped()QueryController.export_shipped_and_delete()QueryController.generate_print_certificates()QueryController.manual_number()QueryController.auto_number()QueryController.generate_batch()QueryController.create_certificates()QueryController.copy_cert_info_to_plan()QueryController.update_cert_fields()QueryController.update_certificate_fields()QueryController.copy_number()QueryController.fill_plan_no()QueryController.hide_records()QueryController.staticMetaObjectQueryController.unhide_records()QueryController.mark_document_done()QueryController.export_to_access()QueryController.get_number_prefix()QueryController.get_certificates_by_plan_ids()QueryController.get_latest_certificate()QueryController.supplement_certificate_params()
- certflow.controllers.report_controller module
ReportControllerReportController.generate_report()ReportController.generate_pressure_test_report()ReportController.generate_material_report()ReportController.get_available_templates()ReportController.open_report_file()ReportController.open_report_folder()ReportController.get_report_statistics()ReportController.query()ReportController.get_distinct_field_combos()ReportController.enrich_bom()
- certflow.controllers.scan_controller module
ScanWorkerScanControllerScanController.progressScanController.completedScanController.errorScanController.strip_unit()ScanController.family_of()ScanController.scan_required_fields()ScanController.family_requires_pn_unit()ScanController.collect_incomplete()ScanController.field_label()ScanController.list_enabled_templates()ScanController.load_dual_defaults()ScanController.individual_codes()ScanController.load_coordinates()ScanController.build_cert_data()ScanController.render_preview_png()ScanController.load_certificates()ScanController.generate_scans()ScanController.cancel()ScanController.is_running()ScanController.staticMetaObject
- certflow.controllers.settings_controller module
SettingsControllerSettingsController._auto_save_timerSettingsController._auto_save_callbackSettingsController.theme_changedSettingsController.language_changedSettingsController.auto_save_triggeredSettingsController.settings_savedSettingsController.get_preference()SettingsController.save_all()SettingsController.set_auto_save_callback()SettingsController.staticMetaObject
Module contents¶
控制器模块
提供系统核心业务逻辑控制器的统一导入接口. 包含控制器基类及各业务领域的具体控制器实现.
- class certflow.controllers.BaseController(db_session=None, db_manager=None, use_shared=True)[源代码]¶
基类:
object控制器基类
所有业务控制器的基类,提供统一的数据库会话管理和事务处理方法. 支持上下文管理器协议,可自动管理会话生命周期. 支持共享数据库管理器,实现全局WebDAV配置统一管理.
- 参数:
db_session (Session | None)
db_manager (DatabaseManager | None)
use_shared (bool)
- db_manager¶
数据库管理器实例,负责创建和管理数据库连接
- session¶
SQLAlchemy数据库会话对象,用于执行数据库操作
- _owns_session¶
是否拥有会话的所有权,决定close()时是否关闭会话
示例
>>> # 方式1: 使用上下文管理器(推荐) >>> with BaseController() as controller: ... result = controller.session.query(User).all() ... controller.commit() >>> >>> # 方式2: 手动管理会话 >>> controller = BaseController() >>> try: ... result = controller.session.query(User).all() ... controller.commit() ... finally: ... controller.close() >>> >>> # 方式3: 共享数据库管理器(支持WebDAV) >>> db_manager = DatabaseManager(webdav_config=config) >>> controller = BaseController(db_manager=db_manager) >>> >>> # 方式4: 使用全局共享管理器 >>> BaseController.set_shared_db_manager(db_manager) >>> controller = BaseController() # 自动使用共享管理器
设置共享的数据库管理器(用于全局WebDAV配置)
设置后,所有新创建的控制器如果没有显式传入db_manager, 都会使用这个共享实例。
- 参数:
db_manager (DatabaseManager) -- 共享的数据库管理器实例
- 返回:
None
- 返回类型:
None
示例
>>> # 在应用启动时设置 >>> db_manager = DatabaseManager(webdav_config=config) >>> BaseController.set_shared_db_manager(db_manager)
获取共享的数据库管理器
- 返回:
共享的数据库管理器实例,如果未设置则返回None
- 返回类型:
DatabaseManager | None
清除共享的数据库管理器
将类级别的共享管理器置空,后续控制器将回退到独立管理器。
- 返回:
None
- 返回类型:
None
- __enter__()[源代码]¶
上下文管理器入口
支持with语句,返回控制器实例自身.
- 返回:
控制器实例自身
- 返回类型:
示例
>>> with BaseController() as controller: ... # 使用controller进行操作 ... pass
- __exit__(exc_type, exc_val, exc_tb)[源代码]¶
上下文管理器出口
退出with代码块时自动关闭数据库会话.
- 参数:
exc_type (type[BaseException] | None) -- 异常类型,如果发生异常则为异常类
exc_val (BaseException | None) -- 异常实例,如果发生异常则为异常对象
exc_tb (TracebackType | None) -- 异常追踪信息,如果发生异常则为traceback对象
- 返回:
None
- 返回类型:
None
- commit()[源代码]¶
提交数据库事务
提交当前会话中的所有更改.如果提交过程中发生异常, 会自动回滚事务并重新抛出异常.
- 返回:
None
- 抛出:
Exception -- 事务提交失败时抛出原始异常
- 返回类型:
None
- get_service(service_cls, *args, **kwargs)[源代码]¶
以当前控制器会话构造一个 Service 实例(收口 Service 构造来源)
统一替代
XxxService(self.session)的散落写法:session 来源经BaseController收口,调用方不直接触碰self.session。仅适用于构造签名首个位置参数为
Session的 Service;首个参数非 会话的 Service(如PrinterService(printer_name))不应走此工厂。
- class certflow.controllers.CertificateController(db_session=None, db_manager=None)[源代码]¶
-
合格证控制器 - 处理合格证打印、刻印等业务
提供合格证的生成、批量打印、刻印标记、状态查询及统计等功能. 支持按产品型号分组打印,自动处理合格证编号生成和打印日志记录.
- 参数:
db_session (Session | None)
db_manager (Any)
- certificate_cache¶
合格证编号缓存字典,用于避免重复生成编号
- generate_certificates_for_sale_plans(sale_plan_ids, force_regenerate=False)[源代码]¶
为销售计划批量生成合格证
遍历指定的销售计划ID列表,为每条销售计划生成对应的合格证记录. 当force_regenerate为True时,即使合格证已存在也会重新生成.
- 参数:
- 返回:
- 生成结果字典,包含以下键:
total: 处理总数
generated: 成功生成数
failed: 失败数
certificates: 生成的合格证对象列表
- 返回类型:
示例
>>> controller = CertificateController() >>> result = controller.generate_certificates_for_sale_plans([1, 2, 3]) >>> print(f"生成成功: {result['generated']}/{result['total']}")
- get_history_last_values(model)[源代码]¶
取同型号上次实际打印值(供统一护栏 ④ diff 闸)。
收口 print_view 原先直连
HistoryBackfillService(self.session)的写法, 视图层不再直接持有 Service,统一经 Controller 访问。
- batch_print_certificates(certificate_ids, printer_name='Default Printer', copies=1)[源代码]¶
批量打印合格证(相同产品会分组打印)
按产品型号对合格证进行分组,逐组执行打印操作, 并为每张合格证记录打印日志.
- 参数:
- 返回:
- 打印结果字典,包含以下键:
total: 总处理数
success: 成功数
failed: 失败数
groups: 各产品组的打印详情列表
logs: 打印日志列表
- 返回类型:
示例
>>> controller = CertificateController() >>> result = controller.batch_print_certificates([1, 2, 3], "HP LaserJet", 2) >>> print(f"打印成功: {result['success']}/{result['total']}")
- get_certificate_by_unique_key(unique_key)[源代码]¶
按 unique_key 取最新合格证(收口 print_view 原直连 CertificateService)。
- render_certificate_bytes(config, data, copies=1, x_offsets=None, printer_name=None)[源代码]¶
渲染合格证 ESC/P-K 原始字节(仅预览/落盘,不真正出纸)。
收口 print_view 原直连
PrinterService.render_certificate_bytes的写法, 视图层不再直接持有 Service。
- auto_save_log(serials, data, printer_name, certificate_id=None)[源代码]¶
自动保存打印记录(委托 CertLogService,收口 print_view 原直连)。
- get_job_certificate_id(job_id)[源代码]¶
按打印任务 ID 取关联合格证 ID(H2 事件驱动重载用)。
视图层不直连 models,经本门面查
print_jobs.certificate_id。 任务不存在或 certificate_id 为空时返回 None。
- save_correction(cert_id, data, template_key)[源代码]¶
保存订正写回数据库(收口 print_view 原直连 ORM + commit)。
视图层只负责采集表单数据 / 触发护栏,不再直接持有 session 或提交事务。
- class certflow.controllers.ImportController(db_session=None, db_manager=None, use_shared=True)[源代码]¶
-
导入控制器 — 导入界面的业务调度层(薄层)
- 参数:
use_shared (bool)
- run_import(config_params)[源代码]¶
执行销售计划导入,返回统计 dict。
仅做「请求透传 + 调 Service + 收结果」,事务由 Service 内部持有 (与历史
run_import行为一致,Controller 不额外 commit/rollback)。
- static apply_range_filter(records, range_filter, selected_rows=None)[源代码]¶
导入范围筛选(预览用,不落库)。
委托 ``SalePlanService.apply_range_filter``(M5 已提升为公开静态方法)。
- static read_and_clean_sheet(file_path, sheet_name, header_row, skip_rows, column_mapping=None)[源代码]¶
读取工作表并经清洗管线转为记录列表(与真实导入同款读取)。
委托
ExcelHandler.read_excel+DataCleaner.clean_sale_plan; pandas 在header=下自动对重名列加.1/.2后缀去重,避免df[col]因重名列返回 DataFrame。
- static detect_header_row(df_raw, keywords, max_rows=20)[源代码]¶
自动检测表头行(委托
SalePlanService.detect_header_row)。
- static extract_year_from_filename(file_path)[源代码]¶
从工作簿文件名提取年份后两位(委托
SalePlanService.extract_year_from_filename)。
- static normalize_record_for_key(rec, session)[源代码]¶
预览/扫描阶段与入库同款清洗:口径/压力规范化后返回新 dict(不污染入参)。
委托
IDGenerator.normalize_spec/IDGenerator.normalize_pn。
- class certflow.controllers.OutputController(session=None, printer_name=None, printer_controller=None, scan_controller=None)[源代码]¶
基类:
object打印 / 扫描统一调度控制器(§11.8 阶段4)。
- 参数:
session (Any)
printer_name (str | None)
printer_controller (PrinterController | None)
scan_controller (ScanController | None)
- property printer_controller: PrinterController¶
- property scan_controller: ScanController¶
- class certflow.controllers.QueryController(session, db_manager=None, parent=None)[源代码]¶
基类:
QObject查询控制器 — 业务逻辑层
- 参数:
session (Session)
db_manager (Any)
parent (QObject | None)
- data_updated¶
数据变更信号(删除/更新后触发,视图应刷新)
- operation_completed¶
操作完成信号,携带状态消息
- operation_failed¶
操作失败信号,携带错误信息
- field_values_loaded¶
(field_name, values)
- Type:
字段可选值加载完成信号
- field_values_load_failed¶
(field_name, error_message)
- Type:
字段可选值加载失败信号
- query(conditions, page, page_size, order_by, order_desc, or_filters=None)[源代码]¶
执行分页查询
- 参数:
- 返回:
查询结果字典,包含 records、page、total_pages、total
- 返回类型:
示例
>>> controller = QueryController(session) >>> result = controller.query( ... conditions={"product_model": "DN100"}, ... page=1, ... page_size=20, ... order_by="id", ... order_desc=True, ... ) >>> print(result["total"], result["records"])
- get_field_values(field_name, order_desc=True)[源代码]¶
获取字段的所有可选值(同步,会阻塞 UI 线程)
推荐使用 load_field_values_async() 异步加载。
- load_field_values_async(field_name, order_desc=True)[源代码]¶
异步加载字段可选值(推荐)
通过后台线程加载,完成后通过 field_values_loaded 信号通知。
- 参数:
- 返回:
FieldValuesWorker 实例(调用方需保持引用避免 GC)
- 返回类型:
- generate_print_certificates(ids, prefix_override=None, print_status='待打印')[源代码]¶
统一「打印合格证」入口:去重安全地编号并生成合格证。
合并原
auto_number_and_create_certs``(查询页「编号/自动编号」)与 ``import_cert_list_from_sales_plan``(「导入合格证清单」)为单一入口。 业务编排在此层,实际生成委托 ``CertificatePrintService: 跳过已生成合格证的计划(避免重复生成 / 唯一约束冲突), 自动编号并写入 Certificate(待打印),返回 (编号数, 合格证数)。分层调用链: View(_goto_print) → Controller(本方法) → CertificatePrintService(编排) → CertNumberingService(数据访问) → Certificate(Model)。
- auto_number(ids, prefix_override=None)[源代码]¶
自动编号(正则解析生产令号/供货类型,委托 CertificatePrintService.auto_number)。
为选中且
product_code为空/占位符、needs_numbering!=False的记录生成产品编号, 写入 SalePlan 并即时刷新。对应工具栏「🔢 自动编号」按钮(修复「点击打印提示需先编号 却没有自动编号按钮」的体验缺口)。
- generate_batch(sale_plan_id, batch_qty, ym=None, start_override=None)[源代码]¶
按「本批台数」为单个销售计划生成一批产品编号(G4 入口)。
委托
CertificateNumberService.generate_batch:合同总数从SalePlan.quantity读取,用shipped_quantity判定剩余与满发,超额直接抛 ``ValueError``(调用方捕获 并转用户提示)。对应工具栏「🔢 自动编号」弹窗输入本批台数的路径。
- update_cert_fields(plan_id, fields)[源代码]¶
订正单条记录的合格证打印字段(仅 cert_* + certificate_remarks)
委托
SalePlanService.update_cert_fields,仅更新合格证字段, 不动合同字段。成功后在查询视图即时刷新。
- update_certificate_fields(cert_id, fields)[源代码]¶
订正单条合格证记录字段(白名单,对称于 update_cert_fields)
委托
CertificateService.update_fields,仅更新合格证打印字段, 不动编号/状态等系统字段。成功后触发查询视图刷新。
- staticMetaObject = PySide6.QtCore.QMetaObject("QueryController" inherits "QObject": Methods: #4 type=Signal, signature=data_updated() #5 type=Signal, signature=operation_completed(QString), parameters=QString #6 type=Signal, signature=operation_failed(QString), parameters=QString #7 type=Signal, signature=field_values_loaded(QString,QVariantList), parameters=QString, QVariantList #8 type=Signal, signature=field_values_load_failed(QString,QString), parameters=QString, QString )¶
- class certflow.controllers.ReportController(db_session=None)[源代码]¶
-
报告控制器 - 处理报告生成的业务逻辑
提供质保书 / 试压报告 / 材质报告的生成,以及模板查询、文件打开等功能。
- generate_report(sale_plan_ids, report_kind='quality', language='zh', records_per_page=6, export_pdf=None)[源代码]¶
生成报告(统一入口)。
- 参数:
- 返回:
ReportOutputService.emit 的结果(含 success/folder/xlsx/pdf/sealed)。
- 返回类型:
- generate_pressure_test_report(sale_plan_ids, template='standard', language='zh', records_per_page=5)[源代码]¶
生成试压报告(兼容旧签名)。
- generate_material_report(data_ids, report_type='material', language='zh', records_per_page=6)[源代码]¶
生成材质报告或质保书(兼容旧签名)。
- query(conditions=None, page=1, page_size=200, or_filters=None)[源代码]¶
复用查询引擎对全库检索(报告数据选择)。
收口
report_view对QueryService的直连调用,使取数统一经 Controller。
- class certflow.controllers.ScanController(session=None, db_manager=None)[源代码]¶
基类:
QObject扫描件控制器
管理扫描件生成任务,通过信号槽实现 UI 与业务逻辑的解耦。
- Signals:
progress: 进度信号 (current, total, message) completed: 完成信号 (result: dict) error: 错误信号 (error_message: str)
- 参数:
session (Any)
db_manager (Any)
- progress¶
- completed¶
- error¶
- strip_unit(pn_display)[源代码]¶
从展示用压力串拆出
(数值, 单位)收口
ScanView原先直连PNService.strip_unit的静态调用, 使压力单位解析逻辑的唯一入口收敛到 Controller 层。
- static scan_required_fields(family, base)[源代码]¶
按语言族计算扫描必填字段(委托
output_guard.scan_required_fields_for)。
- static family_requires_pn_unit(family)[源代码]¶
判断语言族是否要求压力单位(委托
output_guard.family_requires_pn_unit)。
- static load_dual_defaults(session, sale_plan_id)[源代码]¶
读取关联 SalePlan 的 SN/KKS 基准值(委托
SalePlanService.find_by_id)。查询失败或不存在时返回空串字典,不影响基础字段。
- build_cert_data(cert, template_type, serial_number=None, overrides=None, dual_code=False)[源代码]¶
构建单台合格证字段数据(委托
ScanService._build_cert_data)。
- render_preview_png(cert, template_type, width_mm, height_mm, serial_number=None, overrides=None, dual_code=False)[源代码]¶
渲染扫描件预览并返回 PNG 字节流(框架无关,不含 PySide6)。
收口 ScanView 原先对
ScanService``(坐标/数据)与 ``ScanImageHandler(画布/绘制)的直连:预览 == 产出,统一经 Controller 管道。
- generate_scans(certificate_ids, output_dir, template_type='全中文', output_format='JPG', rows=1, cols=1, paper_width_mm=60, paper_height_mm=100, data_overrides=None, dual_code=False)[源代码]¶
异步生成扫描件
- 参数:
- 返回:
任务 ID
- 返回类型:
示例
>>> controller = ScanController(session) >>> from certflow.config.paths_override import cfg >>> task_id = controller.generate_scans([1, 2, 3], cfg("paths.output.scans", "output/scans"), "全中文") >>> print(task_id)
- staticMetaObject = PySide6.QtCore.QMetaObject("ScanController" inherits "QObject": Methods: #4 type=Signal, signature=progress(int,int,QString), parameters=int, int, QString #5 type=Signal, signature=completed(QVariantMap), parameters=QVariantMap #6 type=Signal, signature=error(QString), parameters=QString )¶
- class certflow.controllers.SettingsController(parent=None)[源代码]¶
基类:
QObject设置控制器 — 集中管理用户偏好的读写与运行时生效
- 架构层次:
- View (SettingsView) → Controller (SettingsController) → Handler (ThemeManager/I18nManager)
→ Service (CertLogService 自动保存)
- 参数:
parent (QObject | None)
- _auto_save_timer¶
自动保存定时器
- _auto_save_callback¶
定时器到期时的回调函数
- theme_changed¶
主题变更信号 (light / dark)
- language_changed¶
语言变更信号 (zh_CN / en_US)
- auto_save_triggered¶
自动保存定时器触发信号
- settings_saved¶
设置保存完成信号,携带完整偏好字典
- save_all(preferences)[源代码]¶
保存全部偏好设置并应用运行时变更
- 参数:
preferences (dict[str, Any]) -- 偏好设置字典,可包含: - auto_save: bool - auto_save_interval: int (分钟) - confirm_before_overwrite: bool - language: str - theme: str - max_recent_files: int - printer_offsets: dict {"x_offset": int, "y_offset": int}
- 返回:
None
- 返回类型:
None
示例
>>> controller = SettingsController() >>> controller.save_all({ ... "theme": "dark", ... "language": "zh_CN", ... "auto_save": True, ... "auto_save_interval": 5, ... })
- set_auto_save_callback(callback)[源代码]¶
设置自动保存定时器到期时的回调
- 参数:
callback (callable | None) -- 回调函数,签名为 () -> None,传 None 禁用
- 返回:
None
- 返回类型:
None
- staticMetaObject = PySide6.QtCore.QMetaObject("SettingsController" inherits "QObject": Methods: #4 type=Signal, signature=theme_changed(QString), parameters=QString #5 type=Signal, signature=language_changed(QString), parameters=QString #6 type=Signal, signature=auto_save_triggered() #7 type=Signal, signature=settings_saved(QVariantMap), parameters=QVariantMap )¶