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登录QQ邮箱发信的实现代码
Feb 10 Python
深入解析Python中的lambda表达式的用法
Aug 28 Python
Python3中的json模块使用详解
May 05 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
python3 kmp 字符串匹配的方法
Jul 07 Python
用Python实现读写锁的示例代码
Nov 05 Python
python的json中方法及jsonpath模块用法分析
Dec 06 Python
python next()和iter()函数原理解析
Feb 07 Python
python如何把字符串类型list转换成list
Feb 18 Python
python中绕过反爬虫的方法总结
Nov 25 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 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中利用XML技术构造远程服务(下)
2006/10/09 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
php实现cookie加密的方法
2015/03/10 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
Javascript模块模式分析
2008/05/16 Javascript
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
js实现的四级左侧网站分类菜单实例
2015/05/06 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
详解VUE中常用的几种import(模块、文件)引入方式
2018/07/03 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
node.js爬虫框架node-crawler初体验
2020/10/29 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
如何通过python实现全排列
2020/02/11 Python
任意存:BOXFUL
2018/05/21 全球购物
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
公司年会主持词
2014/03/22 职场文书
现场活动策划方案
2014/08/22 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
2015年财政局工作总结
2015/05/21 职场文书
给校长的建议书范文
2015/09/14 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript
python unittest单元测试的步骤分析
2021/08/02 Python
Javascript的promise,async和await的区别详解
2022/03/24 Javascript