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将mdb数据库文件导入postgresql数据库示例
Feb 17 Python
在Django中同时使用多个配置文件的方法
Jul 22 Python
简单的Apache+FastCGI+Django配置指南
Jul 22 Python
python使用xlrd模块读取xlsx文件中的ip方法
Jan 11 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
matplotlib 对坐标的控制,加图例注释的操作
Apr 17 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
Python初识逻辑与if语句及用法大全
Aug 07 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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 socket(fsockopen)的应用实例分析
2013/06/02 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
2015/12/02 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
微信小程序 视图容器组件的详解及实例代码
2017/01/19 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
Javascript ParentNode和ChildNode接口原理解析
2020/03/16 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
[01:56]生活中的妖精之七夕特别档
2016/08/09 DOTA
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
python监控进程脚本
2018/04/12 Python
python 实现单通道转3通道
2019/12/03 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python中SQLite如何使用
2020/05/27 Python
Python将QQ聊天记录生成词云的示例代码
2021/02/10 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
教师实习期自我鉴定
2013/10/06 职场文书
更夫岗位责任制
2014/02/11 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
2015年保管员工作总结
2015/04/30 职场文书
JUnit5常用注解的使用
2021/07/02 Java/Android