假如有这样一个题目:用PyQt创建了两个窗口,第一个窗口用来登录,当登录成功后,自动关闭第一个窗口,弹出第二个窗口。

问题:如何通过程序关闭第一个窗口呢?

先看我顶层文件的代码:

if __name__ == "__main__":app = QApplication(sys.argv)w1 = MyWindow() # 第一个窗口w1.ui.show()app.exec()# -----------------< 想在这里 关闭第一个窗口,打开第二个窗口w2 = MyWindow2() # 第二个窗口w2.ui.show()app.exec()

从网上查了一圈,我整出了一个可用的方法:

首先,第一个窗口的class中,它在想关闭自己的时候,执行QCoreApplication.instance().quit()

# 需要引入的头文件
from PyQt5.QtCore import QCoreApplication# 关闭窗口进程需要执行的代码
QCoreApplication.instance().quit()

上面第一句话是需要引入的头文件,第二句话就是在关闭该窗口执行的代码,执行该代码会强制QApplication的循环结束,如果程序中只有一个窗口的话,循环结束后,窗口就自动关闭了。

但是在咱们的题目中,第一个窗口结束后,总程序没有结束,所以这样子虽然会调用出第二个窗口,但是第一个窗口依然存活,依然可以点击(至于为什么,还得查看一下C++源码)。那么 在顶层文件中添加一句话就可: del  w1

if __name__ == "__main__":app = QApplication(sys.argv)w1 = MyWindow()w1.ui.show()app.exec()del w1 # 上一段进程QApplication循环结束后,执行del w1删除创建的窗口,将窗口关闭w2 = MyWindow2()w2.ui.show()app.exec()

完美解决!大家可以试一试

那么 QCoreApplication.instance().quit()  这句话放在哪里呢,可以绑定一个按钮,放在按钮的槽函数(回调函数)中,或者放在任何一个槽函数中,只要满足一定的条件,就可以将其关闭,比如在该题目中,检测到输入用户名和密码正确时,就执行这句话,让Application的循环结束,顶层文件的程序就会执行del w1,关闭第一个窗口,打开第二个窗口。

PyQt5使用程序关闭窗口(实测可用)相关推荐

  1. 最新修复站长导航站程序源码+实测可用

    正文: 程序实测可用,宝塔Nginx+ php5.6+ mysql,先导入数据库文件db/www_zuinyh001_cn.sql,再修改config.php数据库配置,然后服务器设置好伪静态规则,访 ...

  2. 最新地铁路线图云开发小程序源码+实测可用

    正文: 地铁路线图小程序源码是一款包含了北京.上海.广州.郑州.山东.杭州等全国近50个城市的地铁路线图, 涵盖了这些城市如地铁1号线2号线全部路线图,以帮助用户更快更方便的了解和体验该城市的交通, ...

  3. 二开WP黑金壁纸小程序源码+实测可用

    正文: 程序后端是基于WordPress的,有WordPress独立后台运行,并且我测试搭建了一下,是可以正常安装使用的,所以大家无需担心程序无法使用,程序在本文最底部. 程序安装非常简单,小白也没有 ...

  4. python PyQt5中文教程☞【第二节】PyQt5基本功能(创建窗口、应用程序图标、显示提示语、通过按钮关闭窗口、消息框(关闭窗口确认框)、窗口显示在屏幕中间【居中显示】)

    引用文章:http://code.py40.com/pyqt5/ 文章目录 简单的例子:创建一个小窗口 应用程序的图标 显示提示语 通过按钮关闭窗口 消息框(关闭窗口确认框) 窗口显示在屏幕的中间[居 ...

  5. pyqt5如何在关闭主窗口时,关闭所有的其余的窗口

    在PyQt5中,你可以通过覆盖QMainWindow或QWidget的closeEvent()方法,来处理关闭窗口时的事件.你可以在该方法中通过遍历应用程序中所有的窗口,并将它们关闭来实现关闭所有其余 ...

  6. mate8怎么关闭html查看器,华为Mate8获取Root教程 实测可用

    本帖最后由 333hp 于 2016-1-10 23:57 编辑 本人已root成功 先将mate8解锁 华为Mate8解锁教程 华为Mate8解开bootloader锁方法,作为一款搭载了最新安卓系 ...

  7. 如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭?

    如何让MFC程序关闭按钮失效,也无法右击任务栏关闭窗口来关闭,即右键任务栏的关闭窗口失效呢?很简单,有一个小窍门就是:响应IDCANCEL消息,具体实现如下: 首先定义消息映射:ON_BN_CLICK ...

  8. U盘怎么拔?该设备正在使用中,请关闭可能使用该设备的所有程序或窗口

    遇到问题:U盘拔不出来,提示该设备正在使用中,请关闭可能使用该设备的所有程序或窗口.但却又感觉程序都关闭了. 分析原因: 1.最常见的问题就是,你的USB设备中有被其他程序所使用的文件,需要关闭相应的 ...

  9. close函数 qt_QT5笔记:关闭应用程序和窗口的函数

    23333 QT一坨,求一门面向傻瓜的语言. QT中 quit(),exit()以及close():常用的三个槽 对主程序的退出,可以调用成员函数exit(),同时也可以调用槽quit(),二者此时都 ...

最新文章

  1. linux cat命令源码,每天一个linux命令:cat 命令
  2. Android 微信支付步骤
  3. 云原生时代下的12-factor应用与实践
  4. boost::format模块测试 wchar_t 格式的使用
  5. 19年8月 字母哥 第五章 静态资源与模板引擎的整合 用热点公司网不行
  6. 客户端渲染换为服务器端渲染_客户端与服务器端渲染:为什么不是全部都是黑白的
  7. java开发13寸_Java 从入门到进阶之路(二十九)
  8. ADO BUG之'无法为更新定位行....' 解决之道
  9. 在linux不能连上互联网的情况下安装IE6
  10. 黑龙江工程学院锐捷校园网连接路由器免认证
  11. ITOP4412开发板学习前的准备2 -- 安装ADB驱动
  12. Lab: Blind SQL injection with time delays and information retrieval:时间延迟盲注和信息检索两个靶场复盘
  13. @CacheEvict-缓存
  14. 服务器系统能装打印机吗,现在云服务器怎么安装打印机
  15. Android 如何加载网页、图片以及PDF文件之项目实战
  16. 第十四届蓝桥杯C++B组题解(不完全对)
  17. Ubuntu server 18.04 服务器配置
  18. 【北邮国院大二下】产品开发与营销知识点整理 Topic4
  19. C# break和continue用法
  20. 企业为什么要先上ERP?

热门文章

  1. c语言怎么判断数组是否为空,PHP 判断数组是否为空的几种方法
  2. 护眼新选择 雾以希雾化润眼仪 震撼来袭
  3. android接口的使用,Android - 接口、MVP 的使用心得
  4. CAD制图教程:CAD软件中怎么编辑双跑楼梯?
  5. 移动端input弹出带有搜索按钮的键盘与获取点击搜索按钮触发的事件
  6. Spring @Autowire注解源码详解
  7. 从扫码到刷脸是支付体验的提升
  8. 江苏科技大学计算机学硕调剂,江苏科技大学2021考研调剂公告
  9. 【苹果家庭共享软件】设备安装iOS13增加了iMessage群发紧缩格式
  10. 面试题:给你一个5升和3升的水壶怎么打4升的水