PaK*_*man 4 python pyqt pyside
在发出之前,我需要检查信号是否存在侦听器.
class Test(QObject):
test = pyqtSignal(str,dict)
def run(self):
if self.receivers(SIGNAL("test(str,dict)"):
self.test.emit('blablabla',{})`
Run Code Online (Sandbox Code Playgroud)
信号连接到插槽右侧并成功发出信号.
检查签名信号时,该方法QObject.receivers()显示该信号未连接.
我理解,理由是签名不正确,我没有找到方法,指定信号的忠实签名.
在 pyqt5 SIGNAL 中已弃用。它被替换为每个 QObject 的信号属性
如果QObject .receivers( QObject . signal ) > 0:
print('signal connected')
Run Code Online (Sandbox Code Playgroud)
检查 QPushButton 信号 clicked() 是否连接到任何插槽
button = QPushButton()
.
.
if button.receivers(button.clicked) > 0:
.....
Run Code Online (Sandbox Code Playgroud)
信号的签名是"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())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1570 次 |
| 最近记录: |