pyqt关闭所有进程
如果您希望在用户尝试关闭窗口时忽略该操作并保持窗口打开状态,则可以重写 closeEvent() 方法并忽略关闭事件。以下是一个示例:
class MainWindow(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.ui.action.triggered.connect(self.close) #调用close,会直接跳到closeEvent
def closeEvent(self, event):
"""
对MainWindow的函数closeEvent进行重构
退出软件时结束所有进程
:param event:
:return:
"""
reply = QtWidgets.QMessageBox.question(self,
'本程序',
"是否要退出程序?",
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
QtWidgets.QMessageBox.No)
if reply == QtWidgets.QMessageBox.Yes:
event.accept()
os._exit(0)#如果用户单击“是”按钮,代码将调用os_exit(0),它将立即终止整个Python解释器进程,退出代码为0。
else:
event.ignore()
pyqt关闭提示按钮汉化
def closeEvent(self, event):
"""
对MainWindow的函数closeEvent进行重构
退出软件时结束所有进程
:param event:
:return:
"""
msg_box = QMessageBox()
msg_box.setWindowTitle('提示')
msg_box.setText('是否要退出程序?')
msg_box.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
msg_box.setDefaultButton(QMessageBox.No)
yes_button = msg_box.button(QMessageBox.Yes)
yes_button.setText('是')
no_button = msg_box.button(QMessageBox.No)
no_button.setText('否')
reply = msg_box.exec_()
if reply == QMessageBox.Yes:
event.accept()
os._exit(0)
else:
event.ignore()