PySide 在初始化后立即连接到 Signal
PySide connecting to Signal right after initialisation
问题
我有一个 class 带有一个在初始化期间发出的信号
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'))
用这种方法我会错过信号,因为连接是在信号发出后建立的
解决方案?
我捕捉信号的唯一想法是为 class 创建第二个初始化方法,如下所示:
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方法,直接连接到Example对象的信号?
如果那不可能:是我建议的方法还是存在更好的方法?
您可以将信号处理程序传递给构造函数:
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'))
问题
我有一个 class 带有一个在初始化期间发出的信号
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'))
用这种方法我会错过信号,因为连接是在信号发出后建立的
解决方案?
我捕捉信号的唯一想法是为 class 创建第二个初始化方法,如下所示:
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方法,直接连接到Example对象的信号?
如果那不可能:是我建议的方法还是存在更好的方法?
您可以将信号处理程序传递给构造函数:
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'))