问题
我有一个带有信号的类,该班在初始化期间发出
from PySide.QtCore import *
class Example(QObject):
signal = Signal()
def __init__(self):
super().__init__()
self.signal.emit()
现在我想连接到信号:
example = Example()
example.signal.connect(lambda: print('signal emitted'))
使用这种方法,我会错过信号,因为该连接是在发出信号之后
之后建立的。解决方案?
我唯一的捕获信号的想法是为这样的类创建第二种初始方法:
from PySide.QtCore import *
class Example(QObject):
signal = Signal()
def __init__(self):
super().__init__()
def second_init(self):
self.signal.emit()
然后以这种方式连接:
example = Example()
example.signal.connect(lambda: print('signal emitted'))
example.second_init()
问题
有没有一种方法可以立即连接到示例对象的信号而无需拆分init方法?
如果这不可能:是我建议走的方式还是更好的方法?
您可以将信号处理程序传递给构造函数:
from PySide.QtCore import *
class Example(QObject):
signal = Signal()
def __init__(self, handler=None):
super().__init__()
if handler is not None:
self.signal.connect(handler)
self.signal.emit()
example = Example(lambda: print('signal emitted'))