PyQt5 接收器

Posted

技术标签:

【中文标题】PyQt5 接收器【英文标题】:PyQt5 receivers 【发布时间】:2016-10-24 15:18:45 【问题描述】:

我想将我的一个 PyQt4 应用程序移植到 PyQt5 并遇到了一个微妙的问题。

在某些时候,我会检查自定义 QThread 对象 (worker) 是否仍然连接了一些特定的信号,我在 PyQt4 中已经这样做了(示例代码):

if worker.receivers(PyQt4.QtCore.SIGNAL("signalFinished(QString,QString)")):
    do_stuff()

在 PyQt5 中有什么方法可以做到这一点吗? PyQt5 reference 不是很有帮助,并且总是将我带到 C++ reference,它仍然是相同的行为。

当然还有一个更“pythonic”的解决方案,使用 try-except-pass 块而不是 if 语句,但我仍然想知道“PyQt 信号”方式。

【问题讨论】:

可能不是这样,但你尝试过新风格的信号吗?这种表示法似乎已被弃用。 【参考方案1】:

使用新式语法,等效代码将是:

if worker.receivers(worker.signalFinished[str, str])):
    do_stuff()

【讨论】:

哇,真的很简单。非常感谢! (很遗憾我自己没有想到这一点......)

以上是关于PyQt5 接收器的主要内容,如果未能解决你的问题,请参考以下文章

未使用 PYQT5 多播 UDP 接收数据报

当我尝试从函数发送和接收列表时,PyQt5 接口崩溃

如何在从串口python pyqt接收的textbrowser pyqt5上附加串行数据[重复]

无法让PyQt5 Designer LCD盒接收显示信号并更新显示

PyQt5 数据在字节类型的信号发射期间丢失

pyqt5怎么刷新widget