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的web.py框架并从hello world开始编程
Apr 25 Python
Python 爬虫学习笔记之多线程爬虫
Sep 21 Python
Python正则表达式常用函数总结
Jun 24 Python
python实现感知器
Dec 19 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
Python实现Linux监控的方法
May 16 Python
Django项目创建到启动详解(最全最详细)
Sep 07 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
python实现交并比IOU教程
Apr 16 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
字典算法实现及操作 --python(实用)
Mar 31 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
深入php函数file_get_contents超时处理的方法详解
2013/06/03 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
php如何实现只替换一次或N次
2015/10/29 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
javascript中的缓动效果实现程序
2012/12/29 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
2016/11/09 Javascript
移动设备手势事件库Touch.js使用详解
2017/08/18 Javascript
基于node.js express mvc轻量级框架实践
2017/09/14 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
python去除文件中重复的行实例
2018/06/29 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
The Hut德国站点:时装、家居用品、美容等
2016/09/23 全球购物
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
String是最基本的数据类型吗?
2013/06/13 面试题
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
建筑个人求职信范文
2014/01/25 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
学生会竞聘书范文
2014/03/31 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android