繁体   English   中英

pyqtSignal和QObject.receivers(..)

[英]pyqtSignal and QObject.receivers(..)

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

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

信号连接到插槽右侧并成功发出信号。
检查签名信号时,方法QObject.receivers()显示此信号未连接。
我理解,理由是签名不正确,我没有找到方法,指定信号的忠实签名。

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

很明显, str被映射到QString和其他本机python对象类型, dictlist ...被映射到C ++类型PyQt_PyObject

信号签名列表可以通过与您的对象关联的QMetaObject获得:

test = Test()
metaobject = test.metaObject()
for i in range(metaobject.methodCount()):
    print(metaobject.method(i).signature())

在pyqt5中,不推荐使用SIGNAL。 它被每个QObject的signal属性替换

如果QObject .receivers( QObject信号 )> 0:

    print('signal connected')

要检查QPushButton信号,clicked()连接到任何插槽

button = QPushButton()
.
.
if button.receivers(button.clicked) > 0:
    .....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM