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 相关文章推荐
深入解析Python中的线程同步方法
Jun 14 Python
Python实现批量更换指定目录下文件扩展名的方法
Sep 19 Python
浅谈python数据类型及类型转换
Dec 18 Python
Python实现进程同步和通信的方法
Jan 02 Python
python批量替换页眉页脚实例代码
Jan 22 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 Python
Pycharm IDE的安装和使用教程详解
Apr 30 Python
python中setuptools的作用是什么
Jun 19 Python
Python-OpenCV教程之图像的位运算详解
Jun 21 Python
python元组打包和解包过程详解
Aug 02 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
isset和empty的区别
2007/01/15 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP将进程作为守护进程的方法
2015/03/19 PHP
javascript 命名空间以提高代码重用性
2008/11/13 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
理解Proxy及使用Proxy实现vue数据双向绑定操作
2020/07/18 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
python批量下载图片的三种方法
2013/04/22 Python
python中实现字符串翻转的方法
2018/07/11 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
浅析Python 责任链设计模式
2020/09/11 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
印度最好的在线药品订购网站:PharmEasy
2018/11/30 全球购物
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
法国春天百货官网:Printemps.com
2020/06/29 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
电话营销开场白
2015/05/29 职场文书
python OpenCV学习笔记
2021/03/31 Python