PyQt5 之消息盒子

默认情况下,点击标题栏的 × 按钮,QWidget 就会关闭。但是有时候,会修改默认行为。比如,如果程序打开的是一个文本编辑器,并且做了一些修改,这时候需要在点击关闭按钮的时候让用户进一步确认操作。
如果关闭 QWidget,就会产生一个 QCloseEvent,并且把它传入到 closeEvent 函数的 event 参数中。改变控件的默认行为,就是替换掉默认的事件处理。

#!/usr/bin/python3
# -*- coding: utf-8 -*-

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

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):
        # 创建一个消息框,上面有俩按钮:Yes 和 No. 第一个字符串显示在消息框的标题栏,第二个字符串显示在对话框,第三个参数是消息框的俩按钮,最后一个参数是默认按钮,这个按钮是默认选中的。返回值在变量 reply 里
        reply = QMessageBox.question(self, 'Message', "Are you sure to quit?", QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
        # 这里判断返回值,如果点击的是Yes按钮,我们就关闭组件和应用,否者就忽略关闭事件
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
  • QMessageBox.question()
本作品采用《CC 协议》,转载必须注明作者和本文链接
不要试图用百米冲刺的方法完成马拉松比赛。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!