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 24 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
May 31 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
Python基础教程之异常详解
Jan 10 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
通过自学python能找到工作吗
Jun 21 Python
一些关于python 装饰器的个人理解
Aug 31 Python
python中reload重载实例用法
Dec 15 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
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
基于原生js淡入淡出函数封装(兼容IE)
2016/10/20 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python下Fabric的简单部署方法
2015/07/14 Python
django批量导入xml数据
2016/10/16 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
python regex库实例用法总结
2021/01/03 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
英国百年闻名的优质健康产品连锁店:Holland & Barrett
2019/12/19 全球购物
数组越界问题
2015/10/21 面试题
数控技术专业推荐信
2013/11/01 职场文书
发展部经理职责规定
2014/02/22 职场文书
党课心得体会范文
2014/09/09 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
教师节主题班会方案
2015/08/17 职场文书
Nginx进程调度问题详解
2021/09/25 Servers