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 ...
随机推荐
- Oracle EBS AR 事务处理到期余额总计API
declare -- Local variables here i integer; x_line_original NUMBER; x_line_remaining NUMBER; ...
- Oracle EBS 锁
这里仅提供查询锁和解锁.有时,锁是正常的,所以杀掉正锁着的进程有一定的风险性. 具体步骤如下: -- 1.0 查看 holder的进程 , 'Holder: ', 'Waiter: ') || sid ...
- json格式转换(json,csjon)(天气预报)
json格式数据默认为string,可以使用eval()函数或者json模块将其转换为dict.标准Json字符串必须使用双引号(")而不能使用单引号('),否则从字符串转换成dict类型会 ...
- Office 365实现单点登录系列(4)—安装AD FS
单一登录 (Single Sign-On)简而言之,就是让用户使用一套ID和密码,就可以登录一个或多个系统的授权机制.用户只需要通过其中一个应用的安全认证之后,再访问同一服务器其他应用的资源时不需要再 ...
- 铁乐学python_day09_作业
练习题 1.整理函数相关知识点,写博客 2.写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素, 并将其作为新列表返回给调用者. def odd_index(l): lis = [] for ...
- jumpserver 问题,给自己看的哦,你们不准看哟
给自己看的,排版忽略! http://docs.jumpserver.org/zh/docs/setup_by_centos7.html 看完全部文档后解决不了再看下边的!!! docker 服务启动 ...
- 一、动态网络编程的概念 二、Tomcat服务器搭建 三、Servlet组件介绍
一.动态网络编程的概念 动态网页:结合了HTML以外的高级程序编程语言和数据库技术生成的页面. 动态网页编程技术: ASP,PHP,JSP HTTP协议:规范浏览器和服务器之间通信的数据格式. 浏览器 ...
- PHP设计模式系列 - 数据访问对象模式
数据访问对象模式 数据访问对象模式描述了如何创建透明访问数据源的对象. 场景设计 设计一个BaseDao基类,实现数据库操作基本的一些query,insert,update方法 在实际使用的过程中,继 ...
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
http://blog.csdn.net/zj510/article/details/39400087 内存管理有三种方式: 1. 虚拟内存,VirtualAlloc之类的函数 2. 堆,Heapxx ...
- 【[BJOI2017]魔法咒语】
矩阵乘法+\(AC\)自动机 是道很不错的题了 首先是前六十分,就是一个\(AC\)自动机上的套路\(dp\),设\(dp[i][j]\)表示匹配出的长度为\(i\)在自动机上位置为\(j\)的方案数 ...