前言
前面介绍了信号与槽有三种使用方法,这三种方法是根使用进行分类的,这里介绍根据信号与槽各自的性质进行分类,便于理解以及对信号与槽有更深刻的理解
内置信号与槽函数
演示单击时关闭窗口,使用内置的信号与槽函数
# -*- coding: utf-8 -*-
"""
【简介】
内置的信号/槽示例
"""
from PyQt5.QtWidgets import *
import sys
class Winform(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('内置的信号/槽示例')
self.resize(330, 50 )
btn = QPushButton('关闭', self)
btn.clicked.connect(self.close)
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
运行程序,效果图如下
在上面的代码中,单击按钮时触发内置的信号clicked,绑定窗口内置的槽函数
内置信号与自定义槽函数
演示单击按钮时关闭窗口,使用内置信号与自定义槽函数
# -*- coding: utf-8 -*-
"""
【简介】
内置的信号,自定义槽函数示例
"""
from PyQt5.QtWidgets import *
import sys
class Winform(QWidget):
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('内置的信号和自定义槽函数示例')
self.resize(330, 50 )
btn = QPushButton('关闭', self)
btn.clicked.connect(self.btn_close)
def btn_close(self):
# 自定义槽函数
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())
效果如上图一样,只是标题变了一下,懒的截图,就直接用上图的了,有兴趣可以自己运行下
在上面的代码中,单击按钮时触发按钮内置的信号,绑定自定义的槽函数
自定义信号与内置槽函数
# -*- coding: utf-8 -*-
"""
【简介】
自定义信号和内置槽函数 示例
"""
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
import sys
class Winform(QWidget):
# 自定义信号,不带参数
button_clicked_signal = pyqtSignal()
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('自定义信号和内置槽函数示例')
self.resize(330, 50 )
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)
win = Winform()
win.show()
sys.exit(app.exec_())
自定义信号和槽函数
# -*- coding: utf-8 -*-
"""
【简介】
自定义信号和槽函数 示例
"""
from PyQt5.QtWidgets import *
from PyQt5.QtCore import pyqtSignal
import sys
class Winform(QWidget):
# 自定义信号,不带参数
button_clicked_signal = pyqtSignal()
def __init__(self,parent=None):
super().__init__(parent)
self.setWindowTitle('自定义信号和槽函数示例')
self.resize(330, 50 )
btn = QPushButton('关闭', self)
# 连接 信号和槽
btn.clicked.connect(self.btn_clicked)
# 接收信号,连接到自定义槽函数
self.button_clicked_signal.connect(self.btn_close)
def btn_clicked(self):
# 发送自定义信号,无参数
self.button_clicked_signal.emit()
def btn_close(self):
self.close()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Winform()
win.show()
sys.exit(app.exec_())