在发出侦听器之前,我需要检查信号是否存在。
class Test(QObject):
test = pyqtSignal(str,dict)
def run(self):
if self.receivers(SIGNAL("test(str,dict)"):
self.test.emit('blablabla',{})`
信号连接到插槽右侧并成功发出信号
检查签名信号时,方法QObject.receivers()
表示此信号未连接
我明白了,理由是签名错误,我没有找到方法,指定信号的忠实签名。
答案 0 :(得分:5)
信号的签名为"test(QString, PyQt_PyObject)"
。
很明显,str
映射到QString
,其他本机python对象类型dict
,list
...映射到C ++类型{{1} }。
信号签名列表可以通过与您的对象关联的PyQt_PyObject
获得:
QMetaObject
答案 1 :(得分:4)
在pyqt5中,不推荐使用SIGNAL。它被每个QObject的信号属性替换
如果 QObject .receivers( QObject 。信号)> 0:
print('signal connected')
要检查QPushButton信号,clicked()连接到任何插槽
button = QPushButton()
.
.
if button.receivers(button.clicked) > 0:
.....