pyqt 子窗口向父窗口传递多参数

2023-12-27 01:18
文章标签 参数 窗口 传递 pyqt 向父

本文主要是介绍pyqt 子窗口向父窗口传递多参数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

信号(Signal)和槽(Slot)是Qt编程中对象间通讯的机制,在编写PyQt5程序时,不可能离得开信号和槽。在Qt中,每一个QObject对象,包括PyQt中所有继承自QWidget的控件(因为它们都是QObject的子对象)都支持signalslot机制。

signal和slot绑定

self.pushButton.clicked.connect(self.button_clicked)

上面的代码表明当按钮pushButton(QPushButtonQWidget的子类)被点击(释放clicked信号)时,slot(方法button_clicked)会被执行。

同一signal绑定多slot

PyQt5允许一个signal同时绑定多个slot,如

from PyQt5.QtWidgets import QPushButtonself.pushButton.clicked.connect(self.button_clicked)
self.pushButton.clicked.connect(self.button_clicked_2)

从执行结果上看,slot执行的顺序是跟绑定的顺序一样的,即先绑先执行。另外对于多个signal绑定同一slot的情况,比较容易理解,就不多说。

一个signal绑定另一个signal

还有种特殊的情况是signalsignal的绑定,这里假设还有一个QPushButton pushButton1,我们让它的clicked信号和pushButton的信号clicked相绑定,如下

from PyQt5.QtWidgets import QPushButtonself.pushButton.clicked.connect(self.button_clicked)
self.pushButton1.clicked.connect(self.pushButton.clicked)

自定义signal

PyQt5提供了QtCore.pyqtSignal函数来产生一个signal,之后就是熟悉的绑定操作了,看个实例就清楚了

from PyQt5.QtWidgets import QWidget
from PyQt5.QtCore import pyqtSignalclass EmitSignal(QWidget):def __init__(self):super(EmitSignal,self).__init__()self.customSignal = pyqtSignal()def emitCustomSignal(self):self.customSignal.emit()

发送带参数的signal

经常需要在某个signal发送时附带相应的数据,实际上就是传参,然后在slot方法中接收传递过来的数据,这样就可以非常灵活地实现一些业务逻辑

首先是生成一个signal,

transcoding_thread_status = pyqtSignal(object)

然后将signalslot方法绑定

self.transcoding_thread_status.connect(self.slotShowTransThreadStatus)

slot方法接收数据

def slotShowTransThreadStatus(something):print(something)

最后来看看,signal emit时是怎么实现的

self.transcoding_thread_status.emit("Hello")

至此数据就传递成功了,就是这么简单。

以上是传递一个参数,那如果我需要传递2个呢,是不是也可以用上面的方法呢?思路是一样的,细节做一点小修改就好了。

transcoding_thread_status = pyqtSignal(str,str)

如果传递的数据类型是整形的话,就换成int,对应的slot方法也要跟着修改

def slotShowTransThreadStatus(something,anything):print('something={}, anything={}'.format(something, anything))

发送信号时,就跟上2个参数

self.transcoding_thread_status.emit("Hello","world")

类似的,如果需要传递更多参数,请依葫芦画瓢。

这篇关于pyqt 子窗口向父窗口传递多参数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541429

相关文章

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

一文详解PostgreSQL复制参数

《一文详解PostgreSQL复制参数》PostgreSQL作为一款功能强大的开源关系型数据库,其复制功能对于构建高可用性系统至关重要,本文给大家详细介绍了PostgreSQL的复制参数,需要的朋友可... 目录一、复制参数基础概念二、核心复制参数深度解析1. max_wal_seChina编程nders:WAL

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

史上最全nginx详细参数配置

《史上最全nginx详细参数配置》Nginx是一个轻量级高性能的HTTP和反向代理服务器,同时也是一个通用代理服务器(TCP/UDP/IMAP/POP3/SMTP),最初由俄罗斯人IgorSyso... 目录基本命令默认配置搭建站点根据文件类型设置过期时间禁止文件缓存防盗链静态文件压缩指定定错误页面跨域问题

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http