PyQt5:发射信号(18)

时间:2022-06-05 23:01:44

学习《PyQt4入门指南 PDF中文版.pdf 》笔记


继承自QtCore.QObject的对象均可以发射信号。如果我们单击一个按钮,那么一个clicked()信号就会被触发。在接下来的示例中,我们将学习如果手动发射一个信号。

<span style="font-size:12px;">#!/usr/bin/python
# emit.py

from PyQt5.QtWidgets import QApplication
from PyQt5 import QtWidgets
from PyQt5.QtCore import pyqtSignal

class Emit(QtWidgets.QWidget):
    closeEmitApp = pyqtSignal()
    def __init__(self, parent= None):
        QtWidgets.QWidget.__init__(self)
  
        self.setWindowTitle('escape')
        self.resize(350,  300)
        self.closeEmitApp.connect(self.close)
     
    def mousePressEvent(self, event):
            self.closeEmitApp.emit()

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    qb = Emit()
    qb.show()
    sys.exit(app.exec_())</span>

        在以上的示例中,我们创建了一个新的信号closeEmitApp(),该信号在按下鼠标事件发生时被发射。

         self.closeEmitApp.emit()

         使用PyQt内建的emit函数来发射信号closeEmitApp()

         self.closeEmitApp.connect(self.close)

         当触发信号槽后,使用connect函数手动创建的信号-槽连接起来,来执行close函数。这个时候用户按下鼠标的任意键时,程序就会结束。