带有weakrefs的python的qt信号/时隙概念。
qsignal的Python项目详细描述
课程
信号
qsignal.Signal是主类。
要创建一个信号,只需创建一个sig = qsignal.Signal,并设置它的发射器。或者用 sig = qsignal.Signal(emitter=foo)。
要发出它,只需调用sig()。 或者使用异步方法以异步模式发出它。
示例:
>>> from qsignal import Signal
>>> # Creating signal >>> sig = Signal()
>>> # Or >>> myobject.signal = Signal(emitter=myobject)
>>> # Connecting to signals >>> sig.connect(callback) >>> myobject.signal.connect(sig) >>> myobject.signal.connect(otherobject.callback_method)
>>> # Emitting >>> sig() >>> myobject.signal('argument(s)', optional=True)
>>> # Emitting in asynchronous mode >>> sig.async()
要将插槽连接到它,请将回调传递到connect中。这些连接是通过weakref来维护的,因此 你不需要搜索它们,也不需要在销毁某个对象时断开连接。
信号员
对象保持其信号的基类。
这个类的唯一目的是自动化信号名称和发射器引用。
>>> from qsignal import Signal, Signaller
>>> # For example, this is a class... >>> class MyClass(Signaller): >>> my_signal = Signal()
>>> # This is a slot... >>> def my_slot(): >>> sig = Signal.emitted() >>> assert sig.name == my_signal >>> assert sig.emitter.__class__ == MyClass
>>> # And the connections... >>> o = MyClass() >>> o.my_signal.connect(my_slot) >>> #... >>> o.my_signal()