У меня есть класс, который принимает два параметра :
- Сигнал – это то, что «излучается» клиентами наружу.
- Слот – это связано с сигнал для выполнения при отправке.
Код: Выделить всё
import typing as _t
from Qt import QtCore as _QtCore
_R = _t.TypeVar("_R")
class SingleShotConnect:
_INSTANCES: _t.ClassVar[_t.Set["SingleShotConnect"]] = set()
def __init__(
self,
signal: "_QtCore.SignalInstance",
slot: _t.Callable[..., _R],
) -> None:
self._signal = signal
self._slot = slot
self._signal.connect(self._single_shot_wrapper)
SingleShotConnect._INSTANCES.add(self)
# error: A function returning TypeVar should receive at least one argument containing the same TypeVar [type-var]
def _single_shot_wrapper(self, *args, **kwargs) -> _R:
self._signal.disconnect(self._single_shot_wrapper)
SingleShotConnect._INSTANCES.remove(self)
# error: Incompatible return value type (got "_R@__init__", expected "_R@_single_shot_wrapper")
return self._slot(*args, **kwargs)
Подробнее здесь: https://stackoverflow.com/questions/792 ... eceives-du