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 相关文章推荐
Python2.x与Python3.x的区别
Jan 14 Python
Python的collections模块中的OrderedDict有序字典
Jul 07 Python
Python实现感知机(PLA)算法
Dec 20 Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 Python
python放大图片和画方格实现算法
Mar 30 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
python实现电脑自动关机
Jun 20 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
Jul 11 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
python操作yaml说明
Apr 08 Python
python用tkinter实现一个gui的翻译工具
Oct 26 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
apache配置虚拟主机的方法详解
2013/06/17 PHP
php 注册时输入信息验证器的实现详解
2013/07/05 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
基于Datatables跳转到指定页的简单实例
2017/11/09 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
[02:10]探秘浦东源深体育馆 DOTA2 Supermajor不见不散
2018/05/17 DOTA
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
python 正则式使用心得
2009/05/07 Python
python根据日期返回星期几的方法
2015/07/06 Python
Python实现图像几何变换
2015/07/06 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python3标准库glob文件名模式匹配的问题
2020/03/13 Python
python 实现socket服务端并发的四种方式
2020/12/14 Python
python opencv肤色检测的实现示例
2020/12/21 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
检讨书1000字
2014/10/11 职场文书
2014年教育实习工作总结
2014/11/22 职场文书
社区义诊通知
2015/04/24 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
php实现自动生成验证码的实例讲解
2021/11/17 PHP
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers