pyqtSignal和QObject.receivers(..)

时间:2011-09-30 10:46:40

标签: python pyqt pyside

在发出侦听器之前,我需要检查信号是否存在。

class Test(QObject):
    test = pyqtSignal(str,dict)
    def run(self):
        if self.receivers(SIGNAL("test(str,dict)"):
           self.test.emit('blablabla',{})`

信号连接到插槽右侧并成功发出信号 检查签名信号时,方法QObject.receivers()表示此信号未连接 我明白了,理由是签名错误,我没有找到方法,指定信号的忠实签名。

2 个答案:

答案 0 :(得分:5)

信号的签名为"test(QString, PyQt_PyObject)"

很明显,str映射到QString,其他本机python对象类型dictlist ...映射到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:
    .....