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)都是内置的
作用:按钮点击后,窗口关闭
完整代码:
from PyQt5.QtWidgets import *
import sys class Test(QDialog):
def __init__(self,parent=None):
super().__init__(parent) btn = QPushButton('关闭', self) btn.clicked.connect(self.close) if __name__ == '__main__':
app = QApplication(sys.argv)
dlg = Test()
dlg.show()
sys.exit(app.exec_())
二、信号内置、槽自定义
功能同上。
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)是自定义的
作用:按钮点击后,窗口关闭
完整代码:
from PyQt5.QtWidgets import *
import sys class Test(QDialog):
def __init__(self,parent=None):
super().__init__(parent) btn = QPushButton('关闭', self) btn.clicked.connect(self.my_func) def my_func(self):
self.close() if __name__ == '__main__':
app = QApplication(sys.argv)
dlg = Test()
dlg.show()
sys.exit(app.exec_())
三、信号是自定义的,槽是内置的
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)是内置的
作用:按钮点击后,窗口关闭
附图说明一下执行顺序:

完整代码:
from PyQt5.QtWidgets import *
import sys 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() # 发送自定义信号,无参 if __name__ == '__main__':
app = QApplication(sys.argv)
dlg = Test()
dlg.show()
sys.exit(app.exec_())
四、信号/槽 都是自定义的
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()
完整代码:
from PyQt5.QtWidgets import *
import sys 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() if __name__ == '__main__':
app = QApplication(sys.argv)
dlg = Test()
dlg.show()
sys.exit(app.exec_())
PyQt5 笔记(05):信号/槽的更多相关文章
- pyqt5界面与逻辑分离--信号槽的装饰器实现方式
本文展示了 pyqt5 信号槽的装饰器实现方式(借鉴自 eirc6) 一个简单的例子.实现功能:两个数相加,显示结果.如图 两个文件,第一个是界面文件 ui_calc.py # ui_calc.py ...
- PyQt5信号-槽机制
signal -> emit -> slot signal.connect(slot) signal.disconnect(slot) 信号 (singal) 可以连接无数多个槽 (slo ...
- 【QT学习笔记】二、信号槽和自定义信号槽
1. 信号槽 int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton button("Qui ...
- Qt信号槽的一些事(第一次知道信号还有返回值,以及Qt::UniqueConnection)
注:此文是站在Qt5的角度说的,对于Qt4部分是不适用的. 1.先说Qt信号槽的几种连接方式和执行方式. 1)Qt信号槽给出了五种连接方式: Qt::AutoConnection 0 自动连接:默认的 ...
- PyQt5 笔记(04):主窗口卡死问题
本文基于:windows 7 + python 3.4 知识点: 1. 将 time.sleep 替换为 QTimer 2. 将 time.sleep 放入到 QThread 3. 使用 QThrea ...
- PyQt5 笔记(03):弹出窗口大全
本文实现了PyQt5个各种弹出窗口:输入框.消息框.文件对话框.颜色对话框.字体对话框.自定义对话框 其中,为了实现自定义对话框的返回值,使用了信号/槽 本文基于 windows 7 + python ...
- PyQt5 笔记
一.简介 pyqt5做为Python的一个模块,它有620多个类和6000个函数和方法.这是一个跨平台的工具包,它可以运行在所有主要的操作系统,包括UNIX,Windows,Mac OS.pyqt5是 ...
- 利用Qt中的ui文件生成PyQt5程序,自定义槽函数
1.在Qt Creator4.8.0上面设计如上.ui文件 2.点击上方图标,可以建立信号-槽连接,button_click()为自定义槽函数 3.设计目的:点击clear按钮,可消除上方文本框中的内 ...
- Boost信号/槽signals2
信号槽是Qt框架中一个重要的部分,主要用来解耦一组互相协作的类,使用起来非常方便.项目中有同事引入了第三方的信号槽机制,其实Boost本身就有信号/槽,而且Boost的模块相对来说更稳定. signa ...
随机推荐
- 浅谈jodaTime 的使用
第一步:引入依赖: 1 <dependency> 2 <groupId>joda-time</groupId> 3 <artifactId>joda-t ...
- Spring MVC Hello World 404
下面的例子说明了如何使用 Spring MVC 框架来编写一个简单的基于 web 的 Hello World 应用程序.下面让我们使用 Eclipse IDE,然后按照下面的步骤使用 Spring 的 ...
- 封装简单的mvc框架
MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式. MVC把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller). PH ...
- centos7.4 nfs-2.3.2
http://www.linuxfromscratch.org/blfs/view/svn/basicnet/libtirpc.html 注释:安装环境centos7.4; 安装完软件成后会升级系 ...
- Log4net 使用之 日期字段格式化
Log4net 是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介. 之前Log4net的日期字段Data一直采 ...
- 三星平板SM-T320刷机
三星 Galaxy Tab Pro 8.4 (SM-T320) / 国行 固件下载 刷机教程 下载手机驱动,刷机工具Odin,相应的固件包,手机和电脑用数据线连接安装好手机的驱动. 手机先完全的关机, ...
- 【原创】python requests 库底层Sockets处于close_wait状态
以前对于Requests库只是简单是使用,在现在公司的后台中,有多个接口是直接使用requests.get .post之类的方法来做的,进行过一段时间的压力测试,发现性能低的可怜,且linux服务器有 ...
- 利用Jquey.hover来实现 鼠标移入出现删除按钮,鼠标移出删除消失
Html代码 <div class="box"><div class="bmbox" onclick="$('.box:first' ...
- 使用Thunderbird时你可能会用到的技巧
1.添加qq邮箱账号 (1).开启IMAP/SMTP服务 先在QQ网页邮箱-设置-账户:开启IMAP/SMTP服务(2). Thunderbird 里设定端口(非POP):IMAP:imap.qq.c ...
- css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)
<a href="javascript:" class="login">登录中<span class="dotting"& ...