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代码来绘制彭罗斯点阵的教程
Apr 03 Python
在Python中使用判断语句和循环的教程
Apr 25 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
Python全面分析系统的时域特性和频率域特性
Feb 26 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
Oct 15 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
Nov 11 Python
Python学习之迭代器详解
Apr 01 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者的疑难问答(1)
2006/10/09 PHP
php获取表单中多个同名input元素的值
2014/03/20 PHP
php调整服务器时间的方法
2015/04/03 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
关于JAVASCRIPT urldecode URL解码的问题
2012/01/08 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
javascript数组随机排序实例分析
2015/07/22 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
JavaScript中的对象和原型(一)
2016/08/12 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
jQuery实现表格的增、删、改操作示例
2019/01/27 jQuery
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
Python开发编码规范
2006/09/08 Python
学习python (2)
2006/10/31 Python
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
keras中的backend.clip用法
2020/05/22 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
详解CSS3中border-image的使用
2015/07/18 HTML / CSS
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
2015年幼儿园毕业感言
2014/02/12 职场文书
质量承诺书格式
2014/05/20 职场文书
洗手间标语
2014/06/23 职场文书
超市促销活动总结
2014/07/01 职场文书
普通党员对照检查材料
2014/09/24 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA