首页 > 其他分享 >Pyqt6&Pyside6 信号与槽详解

Pyqt6&Pyside6 信号与槽详解

时间:2024-05-12 21:19:33浏览次数:16  
标签:控件 函数 单击 Pyqt6 Pyside6 详解 信号 按钮 MainWindow

信号与槽

对于可视化编程,需要将界面上的控件有机结合起来,实现控件功能的联动和交互操作。比如点击按钮,实现某项功能。对按钮功能的定义,是通过信号(signal)与槽(slot)机制实现的。信号与槽是PySide6编程的基础,也是Qt的一大创新,有了信号与槽的编程机制,在PySide6中处理界面上各个控件的交互操作时变得更加直观和简单。

信号:信号是指从QObject类继承的控件(窗口、按钮、文本框、列表框等)在某个动作下或状态发生改变时发出的一个指令或一个信息,例如一个按钮被单击(clicked)、右击一个窗口(customContextMenuRequested)、一个输入框中文字的改变(textChanged)等,当这些控件的状态发生变化或者外界对控件进行输入时,让这些控件发出一个信息,来通知系统其某种状态发生了变化或者得到了外界的输入,以便让系统对外界的输入进行响应。

槽:槽是系统对控件发出的信号进行的响应,或者产生的动作,通常用函数来定义系统的响应或动作,因此也叫做“槽函数”。例如对于单击“计算”按钮,按钮发出被单击的信号,然后编写对应的函数,当控件发出信号时,就会自动执行与信号关联的函数。

信号与槽的关系可以是一对一,也可以是多对多,即一个信号可以关联多个槽函数,一个槽函数也可以接收多个信号。PySide6已经为控件编写了一些信号和槽函数,使用前需要将信号和槽函数进行连接,另外用户还可以自定义信号和自定义槽函数。

内置信号与内置槽的连接

PySide6对控件已经定义的信号和槽可以在Qt Designer中查看。启动Qt Designer创建一个MainWindow.ui文件,在窗口上拖放一个新的Push Button按钮,并将objectName改成btnClose,将text设置成“关闭”。然后单击工具栏上的“编辑信号/槽”按钮,进入信号和槽的编辑界面,按住Shift键的同时,用鼠标左键拖拽“关闭”按钮到窗口的空白区,这时会出现一个红色线和接地符号,松开鼠标,弹出“配置连接”对话框。

img

勾选“显示从QWidget继承的信号和槽”,这时对话框的左边列表框中显示按钮的所有已定义信号,右边列表框中显示窗口所有的槽函数。这里左边选择按钮的clicked()信号,右边选择窗口的close()函数,单击OK按钮,就建立了按钮的单击信号(clicked)和窗口的关闭(close)的连接。

img

按ESC键退出信号/槽编辑状态。另外一种建立信号和槽的方法是使用“信号/槽编辑器”。在Qt Designer的右下角的“信号/槽编辑器”上单击+按钮,双击发送者下的<发送者>,找到btnClose按钮,双击信号下的<信号>,找到clicked(),双击接收者下的<接收者>,找到Form,双击槽下的<槽>,找到close(),这样就建立了信号和槽的连接。如果要删除信号和槽的连接,应先选中信号槽,然后单击-按钮。

img

将ui文件编译成py文件,打开生成的py文件,可以发现在py中增加了一行新代码self.btnClose.clicked.connect(Form.close),用控件信号的connect()方法将信号和函数进行了连接,注意被连接的槽函数不需要带括号。

self.signalName.connect(receiver.slotName)

添加一个main.py,添加如下代码,运行main.py:

from PySide6.QtWidgets import QApplication, QMainWindow
from Ui_MainWindow import Ui_MainWindow
import sys


class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.show()


app = QApplication(sys.argv)
w = MainWindow()
app.exec()

img

当pushButton被点击,窗口被关闭。

标签:控件,函数,单击,Pyqt6,Pyside6,详解,信号,按钮,MainWindow
From: https://www.cnblogs.com/holychan/p/18188165

相关文章

  • ASH日志报告详解
    本文转自:https://blog.csdn.net/cuiyan1982/article/details/778145341.ASH日志报告详解1.1ASH报告使用ash报告,在生成ash报告之后,可以重新检索哪些标识为短暂性能问题的信息。ash报告的内容分成了以下几个部分:topeventsloadprofiletopsqltoppl/sqltopjavatopses......
  • HTTP 连接详解
    概述世界上几乎所有的HTTP通信都是由TCP/IP承载的,客户端可以打开一条TCP/IP连接,连接到任何地方的服务器。一旦连接建立,客户端和服务器之间交换的报文就永远不会丢失、受损或失序TCP(TransmissionControlProtocol)传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层......
  • 详解Redis持久化(持久化高危漏洞利用与多种对抗方案、RDB、AOF、同步手动持久化、异步
    谨防持久化+未授权访问漏洞入侵服务器CVE编号找不到,CNVD有一个:CNVD-2015-07557(国家信息安全漏洞共享平台漏洞编号)。这是我之前写过的文章,漏洞成因、影响范围、POC与对抗方案有详解:谨防利用Redis未授权访问漏洞入侵服务器RDB(RedisDatabase、全量保存,默认方式)极简概括:通过符......
  • set 容器详解 附大根堆题解
    声明本文中题解部分内容大部分转载自@sonnety的这篇博客中,本文为为方便复习而写的结论类文章,读者可自行跳转至原文处阅读。PART1set什么是set——来源cppreference简言之,它就是一种存进去就可以自动按升序排列的特殊容器,通常的set还具有自动去重的功能。定义方......
  • 4-LVS命令详解
    4.LVS命令详解集群定义一组通过高速网络互联的计算机,以单一系统的模式加以管理;将很多服务器集中起来一起,提供同一种服务,在客户端看起来就像是只有一个服务器,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益目的、优点提高性能、降低成本、提高可扩......
  • 详解GaussDB(DWS)中的行执行引擎
    本文分享自华为云社区《GaussDB(DWS)行执行引擎详解》,作者:yd_227398895。1.前言GaussDB(DWS)包含三大引擎,一是SQL执行引擎,用来解析用户输入的SQL语句,生成执行计划,供执行引擎来执行;二是执行引擎,其中包含了行执行引擎和列执行引擎,执行引擎即查询的执行者,位于优化器和存储引擎之间,负......
  • HTTP 报文详解
    报文的语法所有的HTTP报文都可以分为两类:请求报文和响应报文。请求报文会向Web服务器请求一个动作,响应报文会将请求的结果返回给客户端。请求和响应报文的基本报文结构相同请求报文的格式:<method><request-URL><version><headers><entity-body>响应报文的格式:<vers......
  • React的高阶组件详解
    接受一个或多个函数作为参数;返回一个新的函数;2使用场景(页面权限,某些页面是必须用户登录成功才能进行进入;如果用户没有登录成功,那么直接跳转到登录页面;)//定义一个高阶组件,用于鉴权的操作functionloginAuth(WrapperCpn){returnprops=>{//从本地存储中获取tok......
  • C#中Linq的去重方式Distinct详解
    一、首先创建一个控制台应用程序,添加一个Person对象usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceCompare{publicclassPerson{publicstringName{get;set;}......
  • 详解Python 中可视化数据分析工作流程
    本文分享自华为云社区《Python可视化数据分析从数据获取到洞见发现的全面指南》,作者:柠檬味拥抱。在数据科学和分析的领域中,可视化是一种强大的工具,能够帮助我们理解数据、发现模式,并得出洞见。Python提供了丰富的库和工具,使得可视化数据分析工作流程变得高效而灵活。本文将介绍......