python - 如何从 lambda 槽中断开信号?

标签 python pyqt

假设槽需要一个参数,例如,

    self._nam = QtNetwork.QNetworkAccessManager(self)
    # ...
    response = self._nam.get(request)
    self.timer.timeout.connect(lambda: self.on_reply_finished(response))

信号怎么会从插槽上断开呢?以下给出错误 Failed to disconnect signal timeout().:

    self.timer.timeout.disconnect(lambda: self.on_reply_finished(response))

是因为 lambda 不是“真正的”槽而是 Python 技巧吗?在这种情况下,如何将响应参数传递到槽(不使 response 成为成员)?

谢谢

最佳答案

不,这是因为两个 lambda 不是同一个对象。

您需要将与 connect 方法中使用的 disconnect 方法相同的引用传递给该方法。如果您使用匿名 lambda 函数,则除了在信号上调用 disconnect() (不带参数)之外,无法断开它的连接,但这会断开所有 连接的信号.

关于python - 如何从 lambda 槽中断开信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28627502/

相关文章:

python - 检查 Python 2.7 中文件目录路径是否有效的优雅方法

python - Tensorflow - 具有自定义数据集的卷积神经网络无法学习

python - 如何在 Python 中声明重音变量

python - 格式化具有固定长度和空格填充的整数的正确方法

python - 根据字典替换字符串的快速方法

qt - 如何用我自己的代码对 QTableWidget 进行排序?

python - PyQt 多行文本输入框

python - 在 PyQt5 中截取网页

python - 如何检测小部件是否在视线范围内? pyqt

python-2.7 - 显示所选单词的工具提示