第四色播室 NEWS
你的位置:调教小说 > 第四色播室 > 足交 twitter PyQt 玩转 pyqtSignal 自界说信号,如何让多页面之间进行通讯
足交 twitter PyQt 玩转 pyqtSignal 自界说信号,如何让多页面之间进行通讯
发布日期:2024-09-08 18:09    点击次数:132

足交 twitter PyQt 玩转 pyqtSignal 自界说信号,如何让多页面之间进行通讯

PyQt pyqtSignal 自界说信号实例教悔,多页面信息传递

个东说念主觉得pyqtSignal是pyqt里十分实用的一个接口足交 twitter,是 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的信号与槽用法十分相似。 都有信号的激勉足交 twitter,信号与槽函数的贯穿经过。如: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('页面间信号传递实例')
        # 开拓label控件居中
        self.label_0.setAlignment(Qt.AlignCenter)
        # 开拓字体口头
        self.label_0.setFont(QFont('宋体',12,QFont.Bold))
        self.label_1 = QLabel('子页面状况:')
        # 创建单行文本输入框
        self.line_1 = QLineEdit()
        # 创建按钮
        self.create_button = QPushButton('创建子页面')
        self.close_button = QPushButton('关闭子页面')
        # 按钮运转关节
        self.button_init()
        # 创建布局管制器
        self.h1_layout = QHBoxLayout()  # 水平布局管制器
        self.h2_layout = QHBoxLayout()
        self.v_layout = QVBoxLayout()  # 垂直布局管制器
        # 页面运升沉
        self.layout_init()

    # 页面布局关节
    def layout_init(self):
        # 水平布局管制器1
        self.h1_layout.addWidget(self.label_1)
        self.h1_layout.addWidget(self.line_1)
        # 水平布局管制器2
        self.h2_layout.addWidget(self.create_button)
        self.h2_layout.addWidget(self.close_button)
        # 垂直布局管制器
        self.v_layout.addStretch(1)
        self.v_layout.addWidget(self.label_0)
        self.v_layout.addSpacing(10)
        self.v_layout.addLayout(self.h1_layout)
        self.v_layout.addSpacing(10)
        self.v_layout.addLayout(self.h2_layout)
        self.v_layout.addStretch(1)
        # 开拓最终布局
        self.setLayout(self.v_layout)

    # 按钮运升沉关节
    def button_init(self):
        # 创建子页面按钮点击信号绑定槽函数
        self.create_button.clicked.connect(self.create_func)
        # 关闭子页面按钮点击信号绑定槽函数
        self.close_button.clicked.connect(self.close_func)

    # 创建子页面关节
    def create_func(self):
        # 创建子页面
        self.child_widget = Child_Widget()
        # 子页面自界说信号绑定显现子页面信息关节
        self.child_widget.status_signal.connect(
            self.child_widget_info)
        # 开拓子页面称号
        self.child_widget.setWindowTitle('子页面')
        self.child_widget.show()

    # 子页面关闭关节
    def close_func(self):
        try:
            self.child_widget.close()
            self.child_widget.status_signal.connect(self.child_widget_info)
        except:
            self.line_1.setText('子页面不存在!')

    # 子页面信息显现关节
    def child_widget_info(self,info):
        if info == 'create':
            self.line_1.setText('子页面被创建')
        elif info == 'close':
            self.line_1.setText('子页面被关闭')
            

代码分析: 1、父页面有两个按钮:创建子页面按钮,关闭子页面按钮。 2、两个按钮点击信号差别绑定创建页面槽函数,关闭子页面槽函数。 3、创建子页面槽函数,创建了子页面,并将子页面的自界说信号status_signal绑定在子页面信息显现关节。当子页面自界说信号激勉(emit)时激活子页面信息显现槽函数。 4、关闭子页面槽函数,关闭子页面。

创建子页面类:

# 创建子页面类
class Child_Widget(QWidget):
    # 创建自界说子页面状况信号
    status_signal = pyqtSignal(str)
    def __init__(self):
        super(Child_Widget, self).__init__()
        # 设定子页面尺寸
        self.resize(300,300)
        # 设定子页面的窗口称号窜改信号与自界说信号相连
        self.windowTitleChanged.connect(lambda :
                    self.status_signal.emit('create'))

    # 重写关闭关节,将子页面关闭事件与自界说信号相连
    def closeEvent(self, event):
        self.status_signal.emit('close')

代码分析: 1、自界说信号:status_signal ,其传输的信息类型为字符串。 2、子页面状况有创建和关闭两种状况,创建状况用子页面标题窜改信号来绑定自界说信号。 即:子页面标题从无到就怕,自界说信号被激勉(emit),并传递 'create’ 字符串信息。 3、子页面关闭状况,这里是重写了页面关闭关节。让页面关闭事件绑定自界说信号,当页面关闭时激勉信号,并传递 'close’ 字符串信号。

实例父页面类,及展示窗口:

if __name__ == '__main__':
    page = QApplication(sys.argv)
    # 实例父页面
    window = Parents_Widget()
    window.show()
    sys.exit(page.exec())

结果: 以上即是本次 pyqt5 使用自界说信号 pyqtSignal 来进行页面之间的信息传递的关节及实例教悔。 因本东说念主Python 及 pyqt5 均为视频冒昧竹帛自学,门路可能比拟野…。 有讲的不了了足交 twitter,冒昧诞妄之处,接待世界留言连系。也可加本东说念主微信:dw20200318,提真金不怕火源码,一王人学习。

本站仅提供存储行状,扫数本色均由用户发布,如发现存害或侵权本色,请点击举报。