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读写ini配置文件方法实例分析
Jun 30 Python
python脚本实现xls(xlsx)转成csv
Apr 10 Python
遍历python字典几种方法总结(推荐)
Sep 11 Python
回调函数的意义以及python实现实例
Jun 20 Python
Python多进程fork()函数详解
Feb 22 Python
用python做游戏的细节详解
Jun 25 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
Apr 19 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
Python入门之使用pandas分析excel数据
May 12 Python
Python之基础函数案例详解
Aug 30 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字符串截取问题
2006/11/28 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
原生JS实现Ajax通过GET方式与PHP进行交互操作示例
2018/05/12 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
点击标签切换和自动切换DIV选项卡
2014/08/10 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
Websocket协议详解及简单实例代码
2016/12/12 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
js选项卡的制作方法
2017/01/23 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
详解Vue template 如何支持多个根结点
2020/02/10 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
python+matplotlib绘制饼图散点图实例代码
2018/01/20 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
python——全排列数的生成方式
2020/02/26 Python
python中wheel的用法整理
2020/06/15 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
最新计算机专业自荐信
2013/10/16 职场文书
财务总监岗位职责
2014/03/07 职场文书
《七律·长征》教学反思
2016/02/16 职场文书