窗口关闭事件本质上是重写了类内部的closeEvent方法,可以通过重写这个类去实现其他你想要的关闭事件。

下面的例子实现了一个简单的窗口,并为窗口添加了关闭时弹出提示框的功能。

 import sys
from PySide import QtGui class Message(QtGui.QWidget): def __init__(self):
# 如果希望窗口内嵌于其他部件,可添加parent参数
super(Message, self).__init__()
# 调用初始化方法
self.initUI() def initUI(self):
# 设置窗口的所在位置,以左上角为原点,x轴300, y轴300, 宽250, 长150
self.setGeometry(300, 300, 250, 150)
# 给窗口一个标题名,你将会在标题栏看到这个名字
self.setWindowTitle('Message box') def closeEvent(self, event):
# message为窗口标题
# Are you sure to quit?窗口显示内容
# QtGui.QMessageBox.Yes | QtGui.QMessageBox.No窗口按钮部件
# QtGui.QMessageBox.No默认焦点停留在NO上
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?",
QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No,
QtGui.QMessageBox.No)
# 判断返回结果处理相应事项
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore() def main():
# 创建qt的主应用
app = QtGui.QApplication(sys.argv)
# 实例化自己写的类
ex = Message()
ex.show()
# 应用关闭时返回0,sys关闭进程
sys.exit(app.exec_()) if __name__ == '__main__':
main()

此外由于有需求多次使用,简单为它写了个装饰器。

 #!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2016-06-01 14:56:42
# @Author : Nevermoreluo (nevermoreluo@gmail.com)
'''
作用:
为关闭窗口事件提供一个弹出框
使用方法:
调用导入close_Event,
用 @close_Event 装饰类即可 ''' def close_Event(cls):
from PySide import QtGui
# 装饰器为QWidget,QMainWindow类或子类设置关闭窗口
def opfunc(self, event):
# 将弹出窗口的结果赋值给reply
reply = QtGui.QMessageBox.question(self, 'Message',
u"确定要退出吗?",
QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No,
QtGui.QMessageBox.No)
# 检验用户返回,并返回对应的结果
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()
# 将函数赋值给类的closeEvent方法
setattr(cls, 'closeEvent', opfunc)
return cls

最新文章

  1. mysql-netstat
  2. js时间倒计时
  3. linux之虚拟机搭建
  4. JavaScript字符串&数字间转换
  5. JQuery Pagenation 知识点整理——phototype 应用(20150517)(转)
  6. CODEVS 1062 路由选择
  7. python基础教程第4章——字典
  8. TFboy养成记 MNIST Classification (主要是如何计算accuracy)
  9. Java字符编码浅析
  10. python--多继承
  11. 027_nginx常见优化参数
  12. gcc编译c语言程序
  13. sql join 语句的小总结
  14. CSS 控制鼠标在元素停留的样式
  15. python的索引问题
  16. spring的controller默认是单例还是多例
  17. Lintcode: Implement Queue by Stacks 解题报告
  18. 树莓派3 U盘启动 配置 & 即 MSD启动 总结
  19. Nokia Imaging SDK
  20. 使用COM口的2、3针的通断作为中端源(有一个读图像的摄像头,当把卡插到位时触发中端,防止在插卡的过程中出现不稳定的图像)

热门文章

  1. 作业七:团队项目——Alpha版本冲刺阶段003
  2. memo的一般方法
  3. 查询SQLSERVER执行过的SQL记录
  4. Android 数据库管理— — —创建数据库
  5. POJ 3683 Priest John's Busiest Day (2-SAT)
  6. javascript学习之【new操作符】
  7. Android Studio2.2.2下RecyclerView的使用
  8. Javascript的函数自调
  9. .NET将图片Base64字符串还原为图片(jpg格式)并保存到本地
  10. Linux内核分析——理解进程调度时机跟踪分析进程调度与进程切换的过程