博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PyQt4消息窗口
阅读量:4480 次
发布时间:2019-06-08

本文共 1321 字,大约阅读时间需要 4 分钟。

默认情况下,如果我们单击了窗口标题栏上的X标记,窗口就会被关闭。但是有些时候我们想要改变这一默认行为。比如,我们正在编辑的文件内容发生了变化,这时若单击X标记关闭窗口,编辑器就应当但出确认窗口。

#!/usr/bin/python# -*- coding:utf-8 -*-import sysfrom PyQt4 import QtGuiclass MessageBox(QtGui.QWidget):    def __init__(self, parent = None):        QtGui.QWidget.__init__(self, parent)        self.setGeometry(300, 300, 250, 150)        self.setWindowTitle('moonlight poet message box')            def closeEvent(self, event):        reply = QtGui.QMessageBox.question(self, 'Message', 'Are you sure to quit?',                                           QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)        if reply == QtGui.QMessageBox.Yes:            event.accept()        else:            event.ignore()            app = QtGui.QApplication(sys.argv)mb = MessageBox()mb.show()sys.exit(app.exec_())

效果:

如果我们关闭QWidget窗口,QCloseEvent之间就会被触发。要改变原有的widget行为阻止该窗口的关闭,我们就需要重新实现closeEvent()方法。

        reply = QtGui.QMessageBox.question(self, 'Message', 'Are you sure to quit?',

                                           QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

通过上面的语句我们就可以显示一个带有两个按钮(Yes/No)的消息窗口。第一个字符串参数'Message'在消息窗口的标题栏上显示。第二个字符串参数以对话的形式显示在消息窗口中。返回的结果被保存在reply变量中。

        if reply == QtGui.QMessageBox.Yes:

            event.accept()
        else:
            event.ignore()

我们使用上面的if语句来判断用户选择的结果。如果用户选择了Yes按钮,那么关闭widget窗口并终止应用程序的动作会被允许执行;否则,关闭窗口的动作会被忽略。

转载于:https://www.cnblogs.com/moonlightpoet/p/5327164.html

你可能感兴趣的文章
Spring Boot构建RESTful API与单元测试
查看>>
【JavaScript你需要知道的基础知识~】
查看>>
谷歌搜索语法
查看>>
static 静态变量
查看>>
Java面试题(05)
查看>>
操作符重载
查看>>
Docker 安装及问题处理
查看>>
JavaScript中的call 和apply的用途以及区别
查看>>
HashMap完全解读
查看>>
匿名内部类
查看>>
BZOJ4071: [APIO2015]八邻旁之桥
查看>>
Redis的六种特性 场景
查看>>
mysql 添加[取消]timestamp的自动更新
查看>>
码农的半衰期只有15年?
查看>>
手工释放linux内存
查看>>
2014-5-30 总结
查看>>
【H3 BPM工作流程管理产品小故事】第四篇 子表创建
查看>>
洛谷P1148 拱猪计分
查看>>
MySQL服务器的安装和配置,MySQL Workbench 8.0.12安装,MySQL的基本使用
查看>>
扑克序列
查看>>