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二叉树遍历的实现方法
Nov 21 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
python字典值排序并取出前n个key值的方法
Oct 17 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
python数据爬下来保存的位置
Feb 17 Python
python3注册全局热键的实现
Mar 22 Python
Python面向对象魔法方法和单例模块代码实例
Mar 25 Python
Django admin 实现search_fields精确查询实例
Mar 30 Python
jupyter修改文件名方式(TensorFlow)
Apr 21 Python
Python Django中间件使用原理及流程分析
Jun 13 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
python中封包建立过程实例
Feb 18 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
如何过滤高亮显示非法字符
2006/10/09 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP实现动态压缩js与css文件的方法
2018/05/02 PHP
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
2010/02/11 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
Java 正则表达式学习总结和一些小例子
2012/09/13 Javascript
Js实现当前点击a标签变色突出显示其他a标签回复原色
2013/11/27 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
layui switch 开关监听 弹出确定状态转换的例子
2019/09/21 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
Django入门使用示例
2017/12/12 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python实现最长公共子序列
2018/05/22 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python中get和post有什么区别
2020/06/19 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
Belle Maison倍美丛官网:日本千趣会旗下邮购网站
2016/07/22 全球购物
LINUX下线程,GDI类的解释
2012/04/17 面试题
怎样在 Applet 中建立自己的菜单(MenuBar/Menu)?
2012/06/20 面试题
小学语文国培感言
2014/03/04 职场文书
中介业务员岗位职责
2014/04/09 职场文书
公司担保书范文
2014/05/21 职场文书
技校毕业生自荐书
2014/05/23 职场文书
工作检讨书怎么写
2015/01/23 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
python manim实现排序算法动画示例
2022/08/14 Python