PyQt4消息窗口

Posted 月光诗人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt4消息窗口相关的知识,希望对你有一定的参考价值。

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

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

import sys
from PyQt4 import QtGui

class 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窗口并终止应用程序的动作会被允许执行;否则,关闭窗口的动作会被忽略。

以上是关于PyQt4消息窗口的主要内容,如果未能解决你的问题,请参考以下文章

pyqt4的可拖动窗口

无法用PyQt4打开一个新窗口

PyQt4关闭窗口

Python PyQt4 Qpainter 活动消息

PyQt4:如何使用保留空间制作undercorated窗口

如何允许在 PyQt4 中调整 QMessageBox 的大小