示例:
self.query = QtGui.QLineEdit(self)
self.query.textChanged.connect(lambda:self.makeThread(self.googleSearch()))
self.query.returnPressed.connect(lambda: self.launchNavigator(1))
但是如何断开连接? 我尝试过此操作,但不起作用…
self.query.textChanged.disconnect(lambda:self.makeThread(self.googleSearch()))
self.query.returnPressed.disconnect(lambda: self.launchNavigator(1))
lambda表达式返回不同的函数(或多或少是偶然的;))将执行相同的操作。因此,将信号连接到的信号与尝试断开信号时使用的第二个lambda信号不同。看这个例子:
f = lambda x: x
>>> g = lambda x: x
>>> f is g
False
可以使用不带任何参数的self.query.textChanged.disconnect(),这将使信号与所有插槽断开连接(如果只有一个连接,可能没问题),或者必须将对lambda的引用存储在某个位置:
self.func1 = lambda: self.makeThread(self.googleSearch())
self.query.textChanged.connect(self.func1)
...
self.query.textChanged.disconnect(self.func1)