pyqt5入门教程(六)

关键重载函数:def closeEvent(self, event)
这要重载了这个函数,就可以实现关闭的事件处理情况

    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

我们把这个函数加到之前的那个类当中,就有了下面的效果了
pyqt5入门教程(六)_第1张图片

注意到那No被设置了默认聚焦,这是在那个QmessageBox中重载实现的

 def question(self, QWidget, p_str, p_str_1, buttons,QMessageBox_StandardButtons=None,QMessageBox_StandardButton=None, *args, **kwargs): 

这是那个函数的动态函数原型。
QWidget:父组件
p_str:标题
p_str_1:具体信息
buttons:选择的button
最后一个就是默认聚焦的button

具体代码在下面:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QToolTip, QPushButton, QMessageBox
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import QCoreApplication


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.setUI()

    def setUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))
        self.resize(500, 150)
        self.move(100, 100)
        self.setWindowIcon(QIcon('./Title.ico'))
        self.setWindowTitle("Hello world")

        self.setToolTip("this is widget")

        btn = QPushButton("quit Button", self)  # self类似于C++ this指针
        btn.setToolTip("This is a button will quit itself")
        btn.clicked.connect(QCoreApplication.instance().quit)
        btn.resize(btn.sizeHint())
        btn.move(0, 0)

        self.show()

    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    ex = Example()

    sys.exit(app.exec_())

你可能感兴趣的:(Python,QT,计算机基础)