PyQt5 信号与槽机制

说明:
为信号连接槽函数, 在信号激发时实现对槽函数的调用.
作用:
一个信号可以绑定多个槽函数, 实现一对多的激发效果.
信号也可以连接其他的信号.
跨线程时, 必须使用信号进行参数传递.

from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
class TestSignal(QObject):
    # 信号必须定义为类的属性
    # 参数类型 bool int float str list dict tuple object
    signal = pyqtSignal(int, str)
    def __init__(self):
        super().__init__()

def show1(v1, v2):
    print(v1, v2)

def show2(v1, v2):
    print(v2, v1)

if __name__ == '__main__':
    test = TestSignal()
    # 连接槽函数
    test.signal.connect(show1)
    test.signal.connect(show2)
    # 激发信号
    test.signal.emit(0,'a')
    # 断开连接
    test.signal.disconnect(show2)
    test.signal.emit(1,'b')
    # 断开全部连接
    test.signal.disconnect()
    test.signal.emit(2,'c')

槽装饰器
非必要, 目的是将Python方法显式标记为Qt槽,并为其指定C++签名
意义未明确

@PyQt5.QtCore.pyqtSlot(参数类型)
def function(value):
    pass
原文地址:https://www.cnblogs.com/congxinglong/p/15015037.html