pyqt5信号与槽连接的生命周期与对象引用的生命周期,是一致的。举个例子,如果一个变量引用了一个对象,并连接了一个信号,那么如果引用对象发生变化,则原来的连接在新的对象中就不存在了。直接参考代码
from PyQt5.QtCore import QObject, pyqtSignal
class Foo:
def foo(self):
print("Foo")
class Foo1:
def foo(self):
print("Foo1")
class MyClass(QObject):
sendmsg = pyqtSignal()
def __init__(self):
super(MyClass, self).__init__()
self.st = Foo()
def myfunc(self):
self.sendmsg.connect(self.st.foo)
t = MyClass()
t.myfunc()
t.sendmsg.emit()
t.st = Foo1() # 改变引用后,原来的信号与槽的关系就不再存在了
t.sendmsg.emit()
输出
Foo