Files
work-secretfile-selfcheck/UmiOCR-data/py_src/mission/mission_connector.py

33 lines
1.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =====================================================================
# =============== qml与【后端Python任务控制器们】的连接器 ===============
# =====================================================================
from PySide2.QtCore import QObject, Slot, Signal
# 本模块内定义的任务控制器单例
from .mission_ocr import MissionOCR
from umi_log import logger
# 控制器字典
MsnObjDict = {"ocr": MissionOCR}
# 任务连接器类(不限制单例)
class MissionConnector(QObject):
# qml访问某个Python任务控制器的方法同步
# qml调用ctrlKey的方法funcName入参为列表对应参数顺序返回值为可变类型。
@Slot(str, str, list, result="QVariant")
def callPy(self, msnKey, funcName, args=()):
if msnKey not in MsnObjDict:
logger.error(f"qml访问不存在的任务控制器 {msnKey}")
return None
# 获取方法的引用
msnObj = MsnObjDict[msnKey]
method = getattr(msnObj, funcName, None)
# 查询失败
if not callable(method):
logger.error(f"qml调用了 {msnKey} 的不存在的py方法 {funcName}")
return None
# 调用方法,参数不对的话让系统抛出错误
return method(*args)