How pyqt change the taskbar button to close the triggering event

Original: https://blog.csdn.net/u010139869/article/details/79449315

Essays minor modifications, the inherited methods QDialog changed to QMainWindow

Key components: rewrite closeEvent method of QtWidgets.QMainWindow

# Override closeEvent method, implemented to execute some code dialog window is closed 
from PyQt5 Import the QtCore, QtGui, QtWidgets
 Import SYS 

class Dialog (QtWidgets.QMainWindow): 

    DEF get_thread (Self, main_thread): 
        self.main_thread = main_thread 

    DEF closeEvent (Self , event):
         "" " 
        override closeEvent method, implemented to execute some code dialog window is closed 
        : param event: close () event triggered 
        : return: None 
        " "" 
        Reply = QtWidgets.QMessageBox.question (Self,
                                                ' the present program ',
                                                " Do you want to exit the program? " , 
                                               QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, 
                                               QtWidgets.QMessageBox.No) 
        IF Reply == QtWidgets.QMessageBox.Yes: 
            event.accept () 
            sys.exit (0) 
        the else : 
            event.ignore ()

The complete code

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'dialog.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
import sys


class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(640, 480)
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(370, 80, 113, 32))
        self.pushButton.setObjectName("pushButton")
        self.lineEdit = QtWidgets.QLineEdit(Dialog)
        self.lineEdit.setGeometry(QtCore.QRect(140, 80, 113, 21))
        self.lineEdit.setObjectName("lineEdit")
        self.textBrowser = QtWidgets.QTextBrowser(Dialog)
        self.textBrowser.setGeometry(QtCore.QRect(180, 200, 256, 192))
        self.textBrowser.setObjectName("textBrowser")
        self.label = QtWidgets.QLabel(Dialog)
        self.label.setGeometry(QtCore.QRect(30, 80, 111, 16))
        self.label.setObjectName("label")
        self.label_2 = QtWidgets.QLabel(Dialog)
        self.label_2.setGeometry(QtCore.QRect(30, 220, 141, 16))
        self.label_2.setObjectName("label_2")

        self.retranslateUi(Dialog)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "PushButton"))
        self.label.setText(_translate("Dialog", "这是Line Edit ->"))
        self.label_2.setText(_translate("Dialog", "这是Text Browser ->"))


class Dialog(QtWidgets.QMainWindow):
    """ To rewrite QDialog class, implement some features ." ""

    def closeEvent(self, event):
        """ 
        rewrite closeEvent way to achieve dialog window execute some code when closed 
        : param event: close () event is triggered 
        : return: None 
        " "" 
        Reply = QtWidgets.QMessageBox.question ( Self,
                                                ' this program ' ,
                                                ' Do you want to exit the program? " , 
                                               QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, 
                                               QtWidgets.QMessageBox.No) 
        iF Reply == QtWidgets.QMessageBox.Yes:
            event.accept () 
        the else : 
            event.ignore () 


DEF main ():
     "" " 
    The main function, for running programs 
    : return: None 
    " "" 
    App = QtWidgets.QApplication (the sys.argv) 
    Dialog = Dialog ()   # in order to modify their rewriting Note Dialog class 
    UI = Ui_Dialog () 
    ui.setupUi (Dialog) 
    with dialog.show ()   # shows the Dialog class their rewriting 
    the sys.exit (app.exec_ ()) 


IF  the __name__ == ' __main__ ' : 
    main ()

 

Guess you like

Origin www.cnblogs.com/pqhuang/p/11409312.html
Recommended