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

PyQt5中如何捕获QMessageBox的Cancel按钮的点击事件

发布时间:2023-12-31 19:09:50

在PyQt5中,我们可以通过clickedButton信号来捕获QMessageBox的按钮点击事件,然后通过调用buttonRole()方法获取被点击按钮的角色,并判断是否是Cancel按钮被点击。下面是一个使用例子,该例子展示了如何捕获QMessageBox的Cancel按钮的点击事件。

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


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        layout = QVBoxLayout()

        button = QPushButton('Show MessageBox')
        button.clicked.connect(self.show_message_box)
        layout.addWidget(button)

        self.setLayout(layout)

        self.setGeometry(100, 100, 300, 200)
        self.setWindowTitle('QMessageBox Example')
        self.show()

    def show_message_box(self):
        reply = QMessageBox.question(self, 'Message', 'Do you want to quit?',
                                     QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)

        if reply == QMessageBox.Yes:
            print('Yes button clicked')
        elif reply == QMessageBox.No:
            print('No button clicked')
        elif reply == QMessageBox.Cancel:
            self.cancel_button_clicked()

    def cancel_button_clicked(self):
        print('Cancel button clicked')
        # 在这里实现你的逻辑


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在上面的例子中,我们创建了一个窗口类Example,其中包含一个按钮。当点击按钮时,会弹出一个QMessageBox,询问用户是否要退出。QMessageBox的按钮包括Yes、No和Cancel。当用户点击Cancel按钮时,会调用cancel_button_clicked()方法,可以在该方法中实现自己的逻辑。

希望以上例子能够帮助到你!