假设槽需要一个参数,例如,
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/