PyQt pyqtSignal 自定义信号实例讲解,多页面信息传递
个人认为pyqtSignal是pyqt里非常实用的一个接口,是 PyQt5 提供的自定义信号类; 其用法比较灵活,特别适合用于多页面之间的信号,信息传递,其继承自QtCore类。
基本用法:
信号传递方法:可以传递的信息,可以说是基本上覆盖了Python的所有数据类型。
pyqtSignal(str) # 传递字符串数据
pyqtSignal(list) # 传递列表数据
pyqtSignal(tuple) # 传递元祖数据
pyqtSignal(dict) # 传递字典数据
其用法可归纳为:
1、定义信号 diy_signal = pyqtSignal(str);
2、信号激发:diy_signal.emit(需传递的数据);
3、接收信号:diy_signal.connect(激发的槽函数)。
可以看出pyqtSignal和pyqt的信号与槽用法非常类似。
都有信号的激发,信号与槽函数的链接过程。如:QPushButton().clicked.connect(click_func)。
只不过其信号相对于按钮的点击而言,为自定义信号。
实例用法:
我们先来试着用pyqtsignal信号来完成以下的需求:
有两个父子页面,当子页面被创建和关闭时,父页面显示子页面状态信息。
完成最终效果:
先创建父页面类:
# 导入模块
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt,pyqtSignal
from PyQt5.QtGui import QFont
# 创建父页面类
class Parents_Widget(QWidget):
def __init__(self):
super(Parents_Widget, self).__init__()
# 页面基础设置
# 设置窗口标题
self.setWindowTitle('父页面')
# 设置页面尺寸
self.resize(500,200)
# 创建Label控件
# 页面标题label
self.label_0 = QLabel