欢迎访问宙启技术站
智能推送

在Python中如何使用PyQt5的question()方法实现询问用户是否终止操作的消息框

发布时间:2023-12-18 04:18:23

在Python中,可以使用PyQt5库的QMessageBox类中的question()方法实现询问用户是否终止操作的消息框。question()方法会显示一个带有Yes和No按钮的对话框,并返回用户的选择。

下面是一个使用PyQt5的question()方法实现询问用户是否终止操作的示例代码:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QMessageBox

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Message box')

        self.show()

    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
            "Are you sure to quit?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这个例子中,我们创建了一个名为Example的继承自QWidget的窗口类。在initUI()方法中,创建了一个基本的窗口,并在closeEvent()方法中重写了关闭事件。在closeEvent()方法中,我们使用QMessageBox.question()方法来询问用户是否确定要退出。question()方法的参数依次是:父窗口、对话框标题、对话框内容、按钮类型、默认按钮。

- 父窗口:对话框的父窗口。这里我们使用self,表示Example窗口本身。

- 对话框标题:对话框的标题。这里我们使用"Message"作为标题。

- 对话框内容:对话框的内容。这里我们使用"Are you sure to quit?"作为内容。

- 按钮类型:对话框中的按钮类型。我们使用QMessageBox.Yes和QMessageBox.No来表示Yes和No两个按钮。

- 默认按钮:默认选中的按钮。这里我们使用QMessageBox.No来表示默认选中No按钮。

根据用户的选择,我们在if语句中判断用户点击的按钮是否是Yes按钮,如果是,则接受关闭事件,否则忽略关闭事件。

当我们运行这个示例代码时,会显示一个带有"Message"标题和"Are you sure to quit?"内容的对话框,并有Yes和No两个按钮。如果用户点击Yes按钮,程序退出;如果用户点击No按钮,程序继续执行。

使用PyQt5的question()方法实现询问用户是否终止操作的消息框,方便我们在需要获取用户确认的情况下进行相应的操作,并避免了直接终止程序造成的数据丢失。