廢話不多說,直接上源碼,裏頭列舉了實現如題功能的兩種方式:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox
from PyQt5 import QtGui
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
def initUI(self):
self.setGeometry(600,300,300,300)
self.setWindowTitle('messagebox')
self.show()
# def closeEvent(self, event:QtGui.QCloseEvent):
# reply = QMessageBox.question(self,'提醒','確認關閉窗口?',QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
# if reply == QMessageBox.Yes:
# event.accept()
# else:
# event.ignore()
# 實現中文方式1
# def closeEvent(self, event:QtGui.QCloseEvent):
# box = QMessageBox(QMessageBox.Question, self.tr("提示"), self.tr("您確定要退出嗎?"), QMessageBox.NoButton, self)
# yesBtn = box.addButton('是', QMessageBox.YesRole)
# noBtn = box.addButton('否', QMessageBox.NoRole)
#
# box.exec()
# if box.clickedButton() == yesBtn:
# event.accept()
# else:
# event.ignore()
# 實現中文方式2
def closeEvent(self, event:QtGui.QCloseEvent):
box = QMessageBox(QMessageBox.Question,'提示','確認關閉?')
box.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
box.button(QMessageBox.Yes).setText('是')
box.button(QMessageBox.No).setText('否')
box.setDefaultButton(QMessageBox.No)
reply = box.exec()
if reply == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__=='__main__':
app = QApplication(sys.argv)
example = Example()
example.initUI()
sys.exit(app.exec())