# -*- coting: UTF-8 -*-
import sys
from PyQt5.QtWidgets import (QWidget ,QPushButton ,QApplication ,QDesktopWidget , QMessageBox)
from PyQt5.QtCore import QCoreApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
bt = QPushButton("退出" ,self)
#按钮的点击事件关联QCoreApplication.instance().quit退出
bt.clicked.connect(QCoreApplication.instance().quit)
bt.resize(bt.sizeHint())
bt.move(50 ,50)
#窗口显示在屏幕中间
self.center()
self.setWindowTitle("quit")
self.show()
#显示窗口在屏幕中间
def center(self):
#获得窗口
qr = self.frameGeometry()
#获得屏幕中心点
cp = QDesktopWidget().availableGeometry().center()
#显示到屏幕中心
qr.moveCenter(cp)
self.move(qr.topLeft())
#我们关闭窗口的时候,触发了QCloseEvent。我们需要重写closeEvent()事件处理程序。
#重写closeEvent函数,使点击右上角的叉号关闭按钮时,弹框提示“Are you sure to quit?”
def closeEvent(self, event):
#我们显示一个消息框,两个按钮:“是”和“不是”。第一个字符串出现在titlebar。
#第二个字符串消息对话框中显示的文本。第三个参数指定按钮的组合出现在对话框中。
#最后一个参数是默认按钮,这个是默认的按钮焦点。
reply = QMessageBox.question(self, 'Message',
"Are you sure to quit?", QMessageBox.Yes |
QMessageBox.No, QMessageBox.No)
#处理返回值,如果单击Yes按钮,关闭小部件并终止应用程序。否则我们忽略关闭事件。
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec())