PyQt 玩转 pyqtSignal 自定义信号,如何让多页面之间进行通信

本文介绍了如何使用PyQt5的pyqtSignal自定义信号进行多页面间的通信。通过创建、发射和连接信号,实现父页面与子页面状态的实时更新。文中提供了一个实例,展示在子页面创建和关闭时,如何向父页面发送状态信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
PyQtSignalPyQt中用于自定义信号的类。它可以用于在不同的对象之间传递信息。在PyQt中,可以通过定义一个类变量来创建自定义信号。可以使用不同的数据类型作为信号的参数,例如字符串、列表、元组和字典。\[1\] 以下是一个使用PyQtSignal定义信号的示例: ``` from PyQt5.QtCore import Qt, pyqtSignal class TestSignal(QWidget): # 创建自定义信号,只能定义成类变量 mySignal_1 = pyqtSignal() mySignal_2 = pyqtSignal(str) ``` 在上面的示例中,TestSignal类定义了两个自定义信号,一个没有参数,另一个带有一个字符串类型的参数。可以在其他地方连接这些信号并触发它们,以实现不同对象之间的信息传递。\[2\] 希望这个回答对你有帮助。如果你还有其他问题,请随时提问。 #### 引用[.reference_title] - *1* *3* [PyQt 玩转 pyqtSignal 自定义信号,如何让多页面之间进行通信](https://blog.csdn.net/zhouz92/article/details/106446773)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python - PyQt信号/槽函数的使用](https://blog.csdn.net/bailang_zhizun/article/details/86488462)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值