PyQt5每天必学之弹出消息框


Posted in Python onApril 19, 2018

默认情况下,如果我们点击标题栏上的 X 按钮,QWidget 关闭。有时候,我们需要改变这个默认行为。例如,如果我们有一个文件,要在编辑器中打开,我们可以先显示一个消息框,确认打开与否的操作。

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

"""
PyQt5 教程

当我们点击应用程序窗口的关闭按钮,该程序显示一个确认信息框。

作者:我的世界你曾经来过
博客:http://blog.csdn.net/weiaitaowang
最后编辑:2016年7月29日
"""

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

class Example(QWidget):

 def __init__(self):
  super().__init__()

  self.initUI()

 def initUI(self):

  self.setGeometry(300, 300, 300, 220)
  self.setWindowTitle('消息盒子')  
  self.show()

 def closeEvent(self, event):

  reply = QMessageBox.question(self, '信息', '确认退出吗?', 
   QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

  if reply == QMessageBox.Yes:
   event.accept()
  else:
   event.ignore()

if __name__ == '__main__':

 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

如果我们关闭 QWidget控件,将产生 QCloseEvent 事件。修改控件特性我们需要重新实现 closeEvent() 事件处理程序。

reply = QMessageBox.question(self, '信息', '确认退出吗?', 
   QMessageBox.Yes | QMessageBox.No, QMessageBox.No)

我们显示一个消息框,它有两个按钮:Yes和No。第一个字符串出现在标题栏。第二个字符串是对话框中显示的消息文本。第三个参数指定弹出的对话框中的按钮组合。最后一个参数是默认按钮,它是具有初始键盘焦点的按钮。返回值被存储在reply 变量中。

if reply == QMessageBox.Yes:
   event.accept()
  else:
   event.ignore()

在这里我们使用 if 测试返回值。如果我们点击 Yes 按钮,我们接受了按钮控件的关闭并执行应用程序的终止事件。否则,我们忽略关闭事件。

程序执行后点击右上角的 x 弹出确认退出消息盒子

PyQt5每天必学之弹出消息框PyQt5每天必学之弹出消息框

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
本地文件上传到七牛云服务器示例(七牛云存储)
Jan 11 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
Nov 22 Python
python字符串替换的2种方法
Nov 30 Python
Python的Flask框架中web表单的教程
Apr 20 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
python中scikit-learn机器代码实例
Aug 05 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
感知器基础原理及python实现过程详解
Sep 30 Python
Python中xml和dict格式转换的示例代码
Nov 07 Python
浅析Python 抽象工厂模式的优缺点
Jul 13 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
用python发送微信消息
Dec 21 Python
详谈python3中用for循环删除列表中元素的坑
Apr 19 #Python
PyQt5每天必学之关闭窗口
Apr 19 #Python
python实现在IDLE中输入多行的方法
Apr 19 #Python
python贪婪匹配以及多行匹配的实例讲解
Apr 19 #Python
PyQt5每天必学之工具提示功能
Apr 19 #Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 #Python
python 读入多行数据的实例
Apr 19 #Python
You might like
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
基于mysql的bbs设计(二)
2006/10/09 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php生成gif动画的方法
2015/11/05 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
JS实现带阴历的日历功能详解
2019/01/24 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
如何解决js函数防抖、节流出现的问题
2019/06/17 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
Python标准库os.path包、glob包使用实例
2014/11/25 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python zip()函数用法实例分析
2018/03/17 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python3如何在Windows和Linux上打包
2020/02/25 Python
Django正则URL匹配实现流程解析
2020/11/13 Python
女性时尚在线:IVRose
2019/02/23 全球购物
经典C++面试题一
2016/11/06 面试题
轻化专业学生实习自我鉴定
2013/09/20 职场文书
导游个人求职信
2014/04/25 职场文书
李敖北大演讲稿
2014/05/24 职场文书
股东出资证明书范例
2014/10/04 职场文书
2015年党员个人工作总结
2015/05/13 职场文书