PyQt5 笔记(05):信号/槽

简介:

PyQt 的很多类都内置了信号和槽。下图是 Qt 官方文档对 QThread 类中包含的信号/槽的描述:

 

 

 

一、信号/槽 都是内置的

请看一个最简单的程序: 按钮点击后,窗口关闭

                

代码:

复制代码
class Test(QDialog):
    def __init__(self, parent=None):
        super().__init__(parent)

        btn = QPushButton('关闭', self)
        
        btn.clicked.connect(self.close) #
复制代码

对语句①的说明:

      信号 ==> 槽
  信号(btn.clicked)、槽(self.close)都是内置
  作用:按钮点击后,窗口关闭

完整代码:

  View Code

 

 

二、信号内置、槽自定义

功能同上。

复制代码
class Test(QDialog):
    def __init__(self,parent=None):
        super().__init__(parent)

        btn = QPushButton('关闭', self)
        
        btn.clicked.connect(self.my_close) #
        
        
    def my_close(self): # ② 自定义槽
        self.close()
复制代码

对语句①的说明:

      信号 ==> 槽
信号(btn.clicked)是内置的、槽(self.my_close)是自定义
作用:按钮点击后,窗口关闭

 

完整代码:

  View Code

 

 

三、信号是自定义的,槽是内置的

复制代码
class Test(QDialog):

    button_clicked_signal = pyqtSignal() # 自定义信号,不带参
    
    def __init__(self,parent=None):
        super().__init__(parent)

        btn = QPushButton('关闭', self)
        btn.clicked.connect(self.btn_clicked) # ① 信号/槽
        
        self.button_clicked_signal.connect(self.close) # ③接收信号,连接到槽
        
        
    def btn_clicked(self):
        self.button_clicked_signal.emit() # ②发送自定义信号,无参
复制代码

对语句③的说明:

      信号 ==> 槽
信号(button_clicked_signal)是自定义的、槽(self.close)是内置
作用:按钮点击后,窗口关闭

 

附图说明一下执行顺序:

 

 

 

完整代码:

  View Code

 

 

四、信号/槽 都是自定义的

复制代码
class Test(QDialog):

    button_clicked_signal = pyqtSignal() # 自定义信号,不带参
    
    def __init__(self,parent=None):
        super().__init__(parent)

        btn = QPushButton('关闭', self)
        btn.clicked.connect(self.btn_clicked) # 信号/槽
        
        self.button_clicked_signal.connect(self.my_close) # 接收信号,连接到槽
        
        
    def btn_clicked(self):
        self.button_clicked_signal.emit() # 发送自定义信号,无参
        
    def my_close(self):
        self.close()
复制代码

 

完整代码:

  View Code

 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/5176068.html如需转载请自行联系原作者
相关文章
|
6月前
|
前端开发 数据可视化 搜索推荐
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
【100天精通python】Day37:GUI界面编程_PyQt 从入门到实战(上)_PyQt6基本组件、事件和信号槽、界面设计
200 0
|
3月前
PyQt5信号创建及发送
PyQt5信号创建及发送
22 0
|
数据格式
基于STM32+Qt上位机的RGB调色器,全开源!
基于STM32+Qt上位机的RGB调色器,全开源!
204 0
基于STM32+Qt上位机的RGB调色器,全开源!
|
缓存 C++
Qt | 串口通信 QSerialPort
使用QSerialPort实现串口通信功能。
532 0
使用qt实现简易示波器功能
使用qt实现简易示波器功能
|
区块链 Python
PyQt界面编程应用与实践
一个典型的GUI应用程序可以抽象为:主界面(菜单栏、工具栏、状态栏、内容区域),二级界面(模态、非模态),信息提示(Tooltip),程序图标等组成。本篇根据作者使用PyQt5编写的一个工具,介绍如何使用PyQt5构建一个典型的GUI应用。
2127 0
|
Python
发现了一个非常棒的pyqt5的例子集
发现了一个非常棒的pyqt5的例子集 https://github.com/892768447/PyQt 各种各样的PyQt测试和例子 [Python3.4.4 or Python3.5][PyQt5] 1.
3852 0
Pyqt5学习系列
最近在学习Pyqt5做界面,找到了一个非常棒的博主的学习系列 在此记录下来: http://blog.csdn.net/zhulove86/article/category/6381941  
1092 0
|
Python
PyQt 5信号与槽的几种高级玩法
信号(Signal)和槽(Slot)是Qt中的核心机制,也是在PyQt编程中对象之间进行通信的机制。本文介绍了几种PyQt 5信号与槽的几级玩法。 在Qt中,每一个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制。
4867 0