PyQt5学习笔记(四):退出按钮

当我们关闭一个应用时,最常用的方式可能是点击窗口右上方的 X,但其实我们也可以设置一个退出按钮来实现这个功能。这里用到了信号和槽的概念,也是 Qt 最核心的机制,在以后的笔记中会详细解释。
本文由 Cescfangs 译自 ZetCode pyqt5系列教程 并作适当修改。

我们会用到下面的构造函数来创建一个 QpushButton

QPushButton(string text, QWidget parent = None)

text将会显示在按钮上,我们把按钮放在parent这个父部件上,在这个 App 里用的是Qwidget,大多数部件都是继承自父部件而来的,但有些部件没有父部件,这些就是顶级窗口

以下是源代码:

import sys
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication
from PyQt5.QtCore import QCoreApplication
class Exp(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        qtn = QPushButton('Quit', self)
        qtn.resize(qtn.sizeHint())
        qtn.clicked.connect(QCoreApplication.quit)
        qtn.move(40, 50)
        self.setGeometry(200, 300, 400, 400)
        self.setWindowTitle('Quit')
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Exp()
    sys.exit(app.exec_())

通过以上的代码,我们创建了一个退出按钮,按下这个按钮程序就会自动结束。

qtn = QPushButton('Quit', self)

创建一个按钮,qtnQPushButton类的一个实例,QPushButton的第一个参数是按钮上的文字,第二个参数指明这个按钮的父部件,在这里是Exp

qtn.clicked.connect(QCoreApplication.quit)

Qt 也好,Pyqt 也好,处理事件的核心机制都是信号槽。当我们按下这个按钮时,就释放了clicked这个信号,槽可以是 Qt 或者 Python(只要能调用就行)。QCoreApplication包含了主要的事件循环,它可以处理传递任何事件。clicked信号连接了quit这个方法,从而结束进程。
整个过程由两个对象完成,发射器和接收器,按钮是发射器,这个应用是接收器。