在需要时是否有可能在运行时创建信号?

我在函数中做这样的事情:

class WSBaseConnector(QObject)

    def __init__(self) -> None:
        super(QObject, self).__init__()
        self._orderBookListeners: Dict[str, pyqtSignal[OrderBookData]] = {}

    def registerOrderBookListener(self, market: str, listener: Callable[[OrderBookData], None], loop: AbstractEventLoop) -> None:
            try:
                signal = self._orderBookListeners[market]
            except KeyError:
                signal = pyqtSignal(OrderBookData)
                signal.connect(listener)
                self._orderBookListeners[market] = signal
            else:
                signal.connect(listener)

如您所见,我有一个存储str和pyqtSignal对的字典。当我尝试将信号连接到监听器时,出现错误:
'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'

如果没有vars类,是否无法在运行时创建pyqtSignals?

干杯。

最佳答案

不,这是不可能的。 pyqtSignal object是一个工厂函数,它返回descriptor,因此必须在执行class语句时创建它。引用文档:



您的代码正在创建未绑定(bind)的信号对象,这就是为什么出现属性错误的原因。绑定(bind)信号和未绑定(bind)信号之间的区别与类方法完全相同。要再次引用文档:

10-06 05:17