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

PyQt5中如何使用QMessageBox的Cancel按钮显示询问框

发布时间:2023-12-31 19:12:18

PyQt5中可以使用QMessageBox的静态方法question来创建一个带有Cancel按钮的询问框。以下是一个使用例子,该例子创建了一个QMainWindow,在点击按钮时显示询问框,并根据点击结果执行相应的操作。

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("QMessageBox Example")
        self.setGeometry(300, 300, 250, 150)
        
        # 创建一个按钮,点击时弹出询问框
        button = QPushButton("Show MessageBox", self)
        button.setGeometry(50, 50, 150, 30)
        button.clicked.connect(self.showMessageBox)

    def showMessageBox(self):
        # 创建一个询问框
        reply = QMessageBox.question(self, 'MessageBox Example', 'Do you want to proceed?', QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel, QMessageBox.No)
        
        # 根据用户的点击结果执行相应的操作
        if reply == QMessageBox.Yes:
            print("Proceed with the operation.")
        elif reply == QMessageBox.No:
            print("Operation aborted.")
        else:
            print("Cancel button clicked.")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

在这个例子中,我们创建了一个QMainWindow,并在窗口中加入了一个按钮。当按钮被点击时,会弹出一个询问框,询问用户是否想要继续进行操作。询问框中有三个按钮,分别是Yes、No和Cancel。根据用户点击的按钮,我们在showMessageBox方法中执行相应的操作。

在创建询问框时,我们使用了QMessageBox的question方法。方法的 个参数是父窗口,即询问框所属的窗口。第二个参数是询问框的标题文本。第三个参数是询问框显示的文本消息。第四个参数是按钮的样式,我们在这里使用了QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel来同时显示三个按钮。最后一个参数是默认选中的按钮,我们在这里选中了No按钮。

当用户点击按钮后,会以reply的值来表示用户的选择。我们可以根据reply的值来判断用户选择了哪个按钮,然后执行相应的操作。在这个例子中,如果用户选择了Yes按钮,就会打印"Proceed with the operation.";如果用户选择了No按钮,就会打印"Operation aborted.";如果用户选择了Cancel按钮,则会打印"Cancel button clicked."。