我目前正在学习如何使用pyqt5构建应用程序,并且遇到closeEvent方法的一些问题,该方法被重写,因此QMessageBox对象会要求用户进行确认。它似乎与X按钮的工作良好-事件得到'接受'时,行动得到确认和'取消'时,取消按钮被点击。但是,当我使用下拉菜单中的“退出”按钮时,无论单击哪个按钮,程序都会关闭,退出代码为1。看起来很奇怪,因为我在两种情况下都使用相同的closeEvent方法。import sys
from PyQt5.QtWidgets import QApplication, QMessageBox, QMainWindow, QAction
class window(QMainWindow):
def __init__(self):
super().__init__()
def createUI(self):
self.setGeometry(500, 300, 700, 700)
self.setWindowTitle("window")
quit = QAction("Quit", self)
quit.triggered.connect(self.closeEvent)
menubar = self.menuBar()
fmenu = menubar.addMenu("File")
fmenu.addAction(quit)
def closeEvent(self, event):
close = QMessageBox()
close.setText("You sure?")
close.setStandardButtons(QMessageBox.Yes | QMessageBox.Cancel)
close = close.exec()
if close == QMessageBox.Yes:
event.accept()
else:
event.ignore()
main = QApplication(sys.argv)
window = window()
window.createUI()
window.show()
sys.exit(main.exec_())
谢谢你的建议!