python之pyqt专栏8-信号与槽4

信号重载

        在上一篇python之pyqt专栏7-信号与槽3-CSDN博客,我们知道在自定义信号时,可以设定信号参数数据类型。pyqt还支持信号重载。

        

信号定义  
sendText = pyqtSignal([int],[str])

        代码意思是定义重载信号sendText,槽函数的参数可以是int数据类型,str类型的参数

        注:当参数的 Python 类型没有对应的 C++ 类型时,会出错,应谨慎使用重载信号。下面是重载信号为字典与列表会出错。

    # This will cause problems because each has the same C++ signature.valueChanged = pyqtSignal([dict], [list])

 

 定义槽
    def deal_signal(self,arg):if isinstance(arg,str):# print(arg)self.label.setText(arg)if isinstance(arg, int):print(f"age = {arg}")

        槽函数中判断信号传过来数据类型是int类型,还是str类型,int将数据打印,str类型将数据设置为abel的文本内容 

 信号与槽绑定
    myw.sendText[str].connect(myw1.deal_signal)myw.sendText[int].connect(myw1.deal_signal)

        信号进行了重载,需要进行两次数据绑定。 

 发送信号
        self.sendText[str].emit(labelStr)self.sendText[int].emit(19)

        str数据类型信号,获取数据lineEdit的文本内容发送

        int数据类型信号,写定值“19”发送

 

  实现
# 导入sys模块
import sys
# PyQt6.QtWidgets模块中导入QApplication, QWidget
from PyQt6.QtWidgets import QApplication, QWidget
from PyQt6.QtCore import  pyqtSignal,pyqtSlot# untitled模块中导入Ui_Form类
# from untitled import Ui_Form
# from untitled1 import Ui_Form
import untitled
import untitled1class MyMainForm(QWidget, untitled.Ui_Form):sendText = pyqtSignal([str],[int],)# sendText = pyqtSignal(int)def __init__(self, parent=None):# 调用父类的构造函数super(MyMainForm, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.pushButton.clicked.connect(self.btn_clicked)def btn_clicked(self):# 获取行编辑文本labelStr = self.lineEdit.text()self.sendText[str].emit(labelStr)self.sendText[int].emit(19)class MyMainForm1(QWidget, untitled1.Ui_Form):def __init__(self, parent=None):# 调用父类的构造函数super(MyMainForm1, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.move(1200,320)@pyqtSlot(int)@pyqtSlot(str)def deal_signal(self,arg):if isinstance(arg,str):print(arg)self.label.setText(arg)if isinstance(arg, int):print(f"age = {arg}")# Press the green button in the gutter to run the script.
if __name__ == '__main__':# 实例化应用app = QApplication(sys.argv)# 实例化MyMainFormmyw = MyMainForm()myw.show()myw1 = MyMainForm1()myw1.show()myw.sendText[str].connect(myw1.deal_signal)myw.sendText[int].connect(myw1.deal_signal)# 启动应用程序的事件循环并等待用户交互,直到应用程序关闭。sys.exit(app.exec())

 

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/233935.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么要在项目中使用TypeScript?

随着越来越多的开发人员采用TypeScript,人们需要了解在下一个项目中应该使用TypeScript的原因。尽管它在早期应用中遇到了一些阻力,但在过去十年,它迅速成为一种广泛使用的编程语言。 以下介绍如何使用TypeScript以及它给开发人员带来的一些好…

太极拳的招式有哪些?

太极拳的招式有很多,下面列举一些常见的太极拳招式: 起势:太极拳的第一个动作,从预备姿势开始,身体慢慢放松,重心移至左腿,然后慢慢屈膝,上体屈从向前,双臂自然下垂。 野…

【傻瓜级JS-DLL-WINCC-PLC交互】8.DLL读写WINCC连接的PLC数据

思路 JS-DLL-WINCC-PLC之间进行交互,思路,先用Visual Studio创建一个C#的DLL控件,然后这个控件里面嵌入浏览器组件,实现JS与DLL通信,然后DLL放入到WINCC里面的图形编辑器中,实现DLL与WINCC的通信。然后PLC与…

Gateway(拦截器/路由)入门

目录 1、概述2、实现3、网关模块3.1 AbstractGatewayFilterFactory类3.2 AbstractGatewayFilterFactory和 GlobalFilter区别 4、服务模块5、服务之间请求传递请求头6、 代码结构优化 1、概述 微服务框架中网关提供统一的路由方式,并且基于 Filter 链的方式提供了网…

每天一点python——day81

#每天一点Python——81 #递归函数: 递归函数: 一个函数在该函数体内调用了该函数本身,这个函数称为递归函数 【释:我自己调用自己的函数】 递归函数的组成部分: 递归调用与递归终止条件。 【一定有一个跳出循环的终止条…

JDK版本降级,如何重新编译打包项目

目前大部分人使用jdk1.8以及更高版本的jdk,在开发过程中也使用了很多jdk1.8的新特性,但或许还存在一些使用jdk低版本的客户,这时如果我们提供的代码涉及必须高版本jdk才能运行的话,那代码就必须降级,客户才能使用&…

【IDEA开发工具的常用设置和快捷键及Debug调试】

🌠作者:TheMythWS. 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 目录 常用设置篇 【1】进入设置 【2】设置主题 【3】编辑区的字体变大或者变小 【4】鼠标悬浮在代码上有提示…

我的创作纪念日--成为创作者的 第1825天(5年) 啦

醉颜凉 ,不知不觉今天已经是你成为创作者的 第1825天(5年) 啦。 机缘 1、作为一个创作者,我最初成为创作者的初心是出于对技术的热爱和对分享的渴望。我希望通过创作,将自己在实战项目中的经验分享给大家,…

如何写好开发信标题?推荐的营销邮件主题?

打开率高的开发信标题有哪些?怎么写吸引人邮件标题? 开发信标题是您的邮件首次与受众接触的部分,因此,它必须引起他们的兴趣,激发他们打开邮件的欲望。蜂邮EDM将讨论如何写好开发信标题,以及一些成功的开发…

创业者如何在居家办公和固定办公场地办公中权衡利弊,选择合适的

创业者如何选择办公方式,可能要根据自己的创业项目、团队规模、资金情况、行业特点等多方面因素来考虑。一般来说,居家办公和固定办公场地各有优缺点,没有绝对的好坏,只有适合不适合。我为大家总结了一些相关的信息,希…

Elk+Filebeat+Kafka实现日志收集

ElkFilebeatKafka实现日志收集(本机nginx) 部署Zookeeper 1.实验组件 #准备3台服务器做Zookeeper集群 20.0.0.10 20.0.0.20 20.0.0.30 2.安装前准备 #关闭防火墙 systemctl stop firewalld systemctl disable firewalld setenforce 0#安装JDK yum install -y java-1.8.0-o…

C++ 学习笔记——C++纯虚函数和抽象类

C纯虚函数 什么是纯虚函数 1,纯虚函数只有函数名、参数、返回值类型。 2,纯虚函数的定义是在函数句首使用 virtual 关键字修饰,并且在句末增加 “ 0”。 virtual void funtion() 0;3,纯虚函数只有声明,基类可以存…