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