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 相关文章推荐
python3简单实现微信爬虫
Apr 09 Python
Python下线程之间的共享和释放示例
May 04 Python
打包发布Python模块的方法详解
Sep 18 Python
Python内置函数OCT详解
Nov 09 Python
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
Python线程同步的实现代码
Oct 03 Python
Python代码打开本地.mp4格式文件的方法
Jan 03 Python
python 实现视频流下载保存MP4的方法
Jan 09 Python
Python数据报表之Excel操作模块用法分析
Mar 11 Python
python Kmeans算法原理深入解析
Aug 23 Python
Django 创建后台,配置sqlite3教程
Nov 18 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 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
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php使用递归计算文件夹大小
2014/12/24 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
thinkPHP实现签到功能的方法
2017/03/15 PHP
PHP常用函数之根据生日计算年龄功能示例
2019/10/21 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
JS实现的全排列组合算法示例
2017/10/09 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
2019/05/09 Javascript
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
Python中协程用法代码详解
2018/02/10 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
智能旅行箱:Horizn Studios
2018/04/30 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
幼儿园园长岗位职责
2013/11/26 职场文书
毕业研究生的自我鉴定
2013/11/30 职场文书
财务会计专业求职信
2014/06/09 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
行政执法作风整顿剖析材料
2014/10/11 职场文书
2014年保安个人工作总结
2014/11/13 职场文书
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL