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

时间: 2024-10-13 20:57:42

PyQt4消息窗口的相关文章

Winform应用程序实现通用消息窗口

记得我之前发表过一篇文章<Winform应用程序实现通用遮罩层>,是实现了透明遮罩的消息窗口,功能侧重点在动图显示+消息提醒,效果看上去比较的炫,而本篇我又来重新设计通用消息窗口,功能重点在于消息提醒.进度报告,当然如果大家时间,可以将两种相结合,那样就会更完美了,我这里仍是以实现功能为主,由于代码相对简单,我就直接贴上所有代码,大家可以直接复制到本地测试,若发现问题可自行改正或反馈给我,我来完善,谢谢! using System; using System.Collections.Gener

[ucgui] 对话框4——模式消息窗口

>_<" 这里实现点击灰色窗口的按钮出现一个模式消息窗口,点击OK之后才能再聚焦到灰窗口:点击灰窗口除了按钮的地方,弹出一个非模式窗口. 1 static const GUI_WIDGET_CREATE_INFO _aDialogOrder[] = {//大的一个窗口(刚开始显示的,有一个按钮) 2 { FRAMEWIN_CreateIndirect, "Order vehicle", 0, 20, 50, 480, 360, 0 }, 3 { BUTTON_Cr

MahApps.Metro怎么调用消息窗口

网上查看了好多资料,没有找到很清楚明了的结果,经过了多天的研究,无意发现了这个方法来进行全局调用 效果展示: 1.主窗口代码 public partial class MainWindow : MetroWindow { public MainWindow() { InitializeComponent(); MessageExt.Instance.ShowDialog = ShowDialog; } public async void ShowDialog(string message, st

messager(消息窗口)

一.$.messager.alert()类似js中的alert('String') 方法参数:title, msg, icon, function(回调函数) 描述:title头部面板标题.msg主要消息内容.icon:消息图标,可用值有(error,question,info,warning).function回调函数 案例1: $.messager.alert({ title:'消息', msg:'完成加载...', icon:'info', }); 案例2:$.messager.alert

PyQt4关闭窗口

一个显而易见的关闭窗口的方式是但集标题兰有上角的X标记.接下来的示例展示如何用代码来关闭程序,并简要介绍Qt的信号和槽机制. 下面是QPushButton的构造函数,我们将会在下面的示例中使用它. QPushButton(String text, QWiget parent = None) text表示将显示在按钮上的文本.parent是其父对象,用于指定按钮显示在哪个部件中.在我们的示例中,parent是一个QWidget对象. #!/usr/bin/python # -*- coding:u

js 重写 bootstrap 样式 alert/confirm 消息窗口

相信很多人都受够了 alert.confirm 的样子,最近正在用 bootstrap 做项目,顺便封装了一个 bootstrap 样式的消息框. 实现起来很简单,bootstrap 本身就自带了 modal 模态框,样子还不错 :)就把它封装一下用吧. 无码无真相,少说多做,上代码. 项目是Asp.net Mvc架构的,方便全局调用,我直接在全局 Layout 页面加上以下HTML: <!-- system modal start --> <div id="ycf-alert

EasyUI 15-Messager(消息窗口)组件

侠客显示消息窗口

xEngine.Log.ShowConsole(); xEngine.Log.Title = "发布消息实时"; xEngine.Log.WriteLine("测试一下看看"); xEngine.Log.CloseConsole(); 简单好用,不错

窗口和消息

窗口和消息 壹佰软件开发小组  整理编译   在前两章,程序使用了同一个函数MessageBox来向使用者输出文字.MessageBox函数会建立一个「窗口」.在Windows中,「窗口」一词有确切的含义.一个窗口就是屏幕上的一个矩形区域,它接收使用者的输入并以文字或图形的格式显示输出内容. MessageBox函数建立一个窗口,但这只是一个功能有限的特殊窗口.消息窗口有一个带关闭按钮的标题列.一个选项图标.一行或多行文字,以及最多四个按钮.当然,必须选择Windows提供给您的图标与按钮. M