信号(signal)和槽(slot)是Qt的核心机制。在创建事件循环之后,通过建立信号和槽的连接就可以实现对象之间的通信。当信号发射(emit)时,连接的槽函数将会自动执行。在 PyQt 5中,信号和槽通过QObject.signal.connect()连接。
所有从 QObject类或其子类(如QWidget)派生的类都能够包含信号和槽。当对象改变其状态时,信号就由该对象发射出去。槽用于接收信号,但它们是普通的对象成员函数。多个信号可以与单个槽进行连接,单个信号也可以与多个槽进行连接。总之,信号和槽构建了一种强大的控件编程机制。


这意味着对”关闭窗口“按钮单击后会发射clicked信号,这个信号会被Form窗体的槽函数close()捕捉,并触发该窗体的close行为。



新建调用窗口显示的文件CallMainWinSignalSlot01.py
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
from MainWinSignalSlog01 import Ui_Form
class MyMainWindow(QMainWindow , Ui_Form):
def __init__(self,parent = None):
super(MyMainWindow, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
myWin = MyMainWindow()
myWin.show()
sys.exit(app.exec())

点击按钮,窗口关闭,程序退出。
利用“信号与槽编辑窗口”进行信号调整等操作。

使用一个复选框来控制一个标签的显示和一个文本edit的可用。


关键代码

Eric这个IDE有一个叫“生成对话框代码”的功能,也可以生成信号和槽。