[英]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对象类型, dict
, list
...被映射到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.