|
None | __init__ (self, int type=Auto) |
| Initialize the instance.
|
|
| getName (self) |
|
None | __call__ (self) |
|
int | getType (self) |
| Get type of the signal.
|
|
None | emit (self, *Any args, **Any kwargs) |
| Emit the signal which indirectly calls all of the connected slots.
|
|
None | connect (self, Union['Signal', Callable[[], None]] connector) |
| Connect to this signal.
|
|
| disconnect (self, connector) |
| Disconnect from this signal.
|
|
| disconnectAll (self) |
| Disconnect all connected slots.
|
|
| __getstate__ (self) |
| To support Pickle.
|
|
| __deepcopy__ (self, memo) |
| To properly handle deepcopy in combination with getstate
|
|
Simple implementation of signals and slots.
Signals and slots can be used as a light weight event system. A class can define signals that other classes can connect functions or methods to, called slots. Whenever the signal is called, it will proceed to call the connected slots.
To create a signal, create an instance variable of type Signal. Other objects can then use that variable's connect()
method to connect methods, callable objects or signals to the signal. To emit the signal, call emit()
on the signal. Arguments can be passed along to the signal, but slots will be required to handle them. When connecting signals to other signals, the connected signal will be emitted whenever the signal is emitted.
Signal-slot connections are weak references and as such will not prevent objects from being destroyed. In addition, all slots will be implicitly disconnected when the signal is destroyed.
- Warning
- It is imperative that the signals are created as instance variables, otherwise emitting signals will get confused. To help with this, see the SignalEmitter class.
Loosely based on http://code.activestate.com/recipes/577980-improved-signalsslots-implementation-in-python/ #pylint: disable=wrong-spelling-in-comment
- See also
- SignalEmitter