pyside窗口关闭触发事件
窗口关闭事件本质上是重写了类内部的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
pyside窗口关闭触发事件的更多相关文章
- Python窗口学习之浅尝按键触发事件
一.窗口上敲键盘触发事件(以Enter键为例) 二.点击窗口按钮触发事件(以鼠标左键双击为例) 代码: import tkinter as tk root = tk.Tk() root.geometr ...
- js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法
js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法 javascript如何捕捉IE窗口失去焦点事件window.onblur = function(e) { //you code}; 弹框的 ...
- javascript捕获页面窗口关闭事件
javascript捕获窗口关闭事件有两种方法 onbeforeunload() ,onUnload() 用法有两种: 1. function window.onbefore ...
- gtk+程序在关闭主窗口时的事件流
当鼠标单击gtk+窗口的关闭按钮时,程序首先接收到delete_event,当该事件处理函数返回TRUE表示事件已处理禁止进一步传播,从而取消关闭操作:当返回FALSE时,事件消息进一步向上传播,此时 ...
- Easyui 关闭jquery-easui tab标签页前触发事件
关闭jquery-easui tab标签页前触发事件 by:授客 QQ:1033553122 测试环境 jquery-easyui-1.5.3 需求场景 点击父页面tab 页关闭按钮时,需要做判断,判 ...
- 关于ElementUI中MessageBox弹框的取消键盘触发事件(enter,esc)关闭弹窗(执行事件)的解决方法
好久没见了 在项目中遇到一个小小的需求,总结了一下! 详细我就不介绍了,相信大家用过的话,很了解.详见文档-----------> http://element-cn.eleme.io/#/zh ...
- pyqt pyside 设置窗口关闭时删除自身
pyqt pyside 设置窗口关闭时删除自身 self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
- C# 窗口关闭事件
首先添加一个退出事件函数 //退出按键 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogRe ...
- C#中窗口关闭时没有取消事件订阅导致事件重复执行的解决方法
场景 C#中委托与事件的使用-以Winform中跨窗体传值为例: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100150700 ...
随机推荐
- logistc regression练习(三)
% Exercise 4 -- Logistic Regression clear all; close all; clc x = load('E:\workstation\data\ex4x.dat ...
- Performance Considerations for Entity Framework 4, 5, and 6
Performance Considerations for Entity Framework 4, 5, and 6 https://msdn.microsoft.com/en-sg/data/hh ...
- OpenCV在VS2005下的配置
http://bbs.ednchina.com/BLOG_ARTICLE_3019518.HTM 这是自己今天刚弄好了之后的一点经历.不是很详细.以后有时间一定要整理整理.
- oc swizzling 真的好用
Objective-C的hook方案(一): Method Swizzling 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写.和借助类别重名方法暴力抢先之外,还有更加灵活 ...
- Android测试关注点
Android系统app测试,一般有native app原生,web app网页, hybird app混合 1.功能测试,考虑业务逻辑,主要手机和APP交互功能,来电,短信,闹钟可能对app造成的影 ...
- C#导入Excel遇到数字字母混合列数据丢失解决
错误重现: ----------------------------------------------------------------------- 在导入Excel读取数据时,其中的一个字段保 ...
- Qt5.5中,使MainWindow初始为全屏
MainWindow w; w.showMaximized(); 实例化后,初始显示设置为最大格式即可!
- difference between forward and sendredirect
Difference between SendRedirect and forward is one of classical interview questions asked during jav ...
- BZOJ 1799 同类分布
一开始没想出来..一看题解 我艹直接枚举数位的和啊.....怪不得给50s. 还是太蠢. #include<iostream> #include<cstdio> #includ ...
- 安装XAMPP后APACHE不能启动解决方法
自己的xampp中的apache启动失败,在网上找到了一篇文章,感觉不错,原文如下: Xampp的获得和安装都十分简单,你只要到以下网址: http://www.apachefriends.org/z ...