1、重写closeEvent()
def closeEvent(self, event): reply = QtWidgets.QMessageBox.question(self, 'Message', '你确认要退出么?', QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, QtWidgets.QMessageBox.No) if reply == QtWidgets.QMessageBox.Yes: sys.exit(0) else: event.ignore()
2、调用子窗口时使用exec_()代替show()
self.my_dialog = MyDialog()
self.my_dialog.exec_()
注意:Dialog 可执行exec_() 方法, Widget 没有exec_()方法
详情见:https://www.cnblogs.com/dcb3688/p/4586373.html(讲述非模式对话框及模式对话框)