PyQt5每天必学之关闭窗口


Posted in Python onApril 19, 2018

最简单的关闭一个窗口的方法是点击标题栏上的 x 标志。但是,在下面的例子中,我们将展示如何通过编程来控制关闭窗口。我们将使用PyQt5的信号/槽。

以下是我们在例子中使用到的 QPushButton 控件的构造方法。

QPushButton(string text, QWidget parent = None)

text 参数是在按钮上显示的文本。parent 要将按钮控件放在哪里。在下面的例子中我们要将按钮控件放到 QWidget里。一个应用程序的窗口控件可以形成一个分层结构,在这个层次,大多数控件有他们的父控件,没有父控件的控件即是顶层窗口。

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

"""
PyQt5 教程

这个程序创建一个退出按钮。当我们按下按钮,应用程序将终止。

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

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import QCoreApplication

class Example(QWidget):

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

  self.initUI()

 def initUI(self):

  btn = QPushButton('退出', self)
  btn.clicked.connect(QCoreApplication.instance().quit)
  btn.resize(btn.sizeHint())
  btn.move(50, 50)

  self.setGeometry(300, 300, 300, 220)
  self.setWindowTitle('退出按钮')  
  self.show()

if __name__ == '__main__':

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

在这个例子中,我们创建了一个退出按钮。当点击按钮,应用程序终止。

from PyQt5.QtCore import QCoreApplication

我们需要使用 QtCore 模块中的 QCoreApplication 对象

btn = QPushButton('退出', self)

我们创建了一个按钮,按钮是 QPushButton 类的一个实例。构造函数的第一个参数是按钮的标签。第二个参数是父窗口控件。父窗口控件是Example 控件,这是一个继承自 QWidget 的类。

btn.clicked.connect(QCoreApplication.instance().quit)

该事件处理系统建立在 PyQt5 的信号/槽的机制上。如果我们点击该按钮,按钮将会发出信号,单击信号连接到 quit() 方法使应用程序终止。

槽可以是 Qt 的槽也可以是 Python 的任何调用。 QCoreApplication 包含主事件循环;它处理和调度所有事件。instance()方法为我们提供了其当前实例。注意,区分 QCoreApplication 与 QApplication。

发送器和接收器:在通信的两个对象之间进行。发送器是按钮,接收器是应用对象。

概念有些混乱,这里整理一下:

按钮(btn)是发送器。点击(clicked)按钮后,发出点击信号。点击信号连接(connect)到槽(可以是 Qt 的槽也可以是 Python 的任何调用)。
在我们的例子中是Qt的槽,QCoreApplication处理和调度所有Qt事件,调度出instance(这个实例(接收器))的 quit 事件。

大概就这个意思了,慢慢理解吧!

程序执行后,点击退出按钮,将关闭程序。

PyQt5每天必学之关闭窗口

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

Python 相关文章推荐
Python聚类算法之DBSACN实例分析
Nov 20 Python
Python字典实现简单的三级菜单(实例讲解)
Jul 31 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
Python 多维List创建的问题小结
Jan 18 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
Python Scrapy框架第一个入门程序示例
Feb 05 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
Feb 14 Python
python Xpath语法的使用
Nov 26 Python
python文本处理的方案(结巴分词并去除符号)
May 26 Python
python实现在IDLE中输入多行的方法
Apr 19 #Python
python贪婪匹配以及多行匹配的实例讲解
Apr 19 #Python
PyQt5每天必学之工具提示功能
Apr 19 #Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 #Python
python 读入多行数据的实例
Apr 19 #Python
Python 绘图库 Matplotlib 入门教程
Apr 19 #Python
python 列表删除所有指定元素的方法
Apr 19 #Python
You might like
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP 过滤页面中的BOM(实现代码)
2013/06/29 PHP
浅谈php自定义错误日志
2015/02/13 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
2016/03/05 PHP
PHP使用自定义方法实现数组合并示例
2016/07/07 PHP
PHP实现清除MySQL死连接的方法
2016/07/23 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
2013/07/07 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
jQuery中的$.ajax()方法应用
2014/05/06 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python 字符串与数字输出方法
2018/07/16 Python
详解python中的hashlib模块的使用
2019/04/22 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
学python安装的软件总结
2019/10/12 Python
tensorflow实现测试时读取任意指定的check point的网络参数
2020/01/21 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
老师推荐信
2013/10/28 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
检讨书范文大全
2015/05/07 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
以下牛机,你有几个
2022/04/05 无线电