Python基础之PyQt5关闭界面
想让执行完程序后自动关闭窗口,而不用点击右上角叉叉的方法是self.close(),具体应用还是以treewidget为例。
前面我们写了一个treewidget的界面,并且实现了界面代码分离,具体实现不多讲了,直接上代码:
treeview4.py
- # -*- coding: utf-8 -*-
- # Form implementation generated from reading ui file 'treeview4.ui'
- #
- # Created by: PyQt5 UI code generator 5.13.0
- #
- # WARNING! All changes made in this file will be lost!
- from PyQt5 import QtCore, QtGui, QtWidgets
- class Ui_MainWindow(object):
- def setupUi(self, MainWindow):
- MainWindow.setObjectName("MainWindow")
- MainWindow.resize(800, 600)
- self.centralwidget = QtWidgets.QWidget(MainWindow)
- self.centralwidget.setObjectName("centralwidget")
- self.treeWidget = QtWidgets.QTreeWidget(self.centralwidget)
- self.treeWidget.setGeometry(QtCore.QRect(150, 80, 411, 341))
- self.treeWidget.setObjectName("treeWidget")
- MainWindow.setCentralWidget(self.centralwidget)
- self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
- self.menubar.setObjectName("menubar")
- MainWindow.setMenuBar(self.menubar)
- self.statusbar = QtWidgets.QStatusBar(MainWindow)
- self.statusbar.setObjectName("statusbar")
- MainWindow.setStatusBar(self.statusbar)
- self.retranslateUi(MainWindow)
- QtCore.QMetaObject.connectSlotsByName(MainWindow)
- def retranslateUi(self, MainWindow):
- _translate = QtCore.QCoreApplication.translate
- MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
- self.treeWidget.headerItem().setText(0, _translate("MainWindow", "Key"))
- self.treeWidget.headerItem().setText(1, _translate("MainWindow", "Value"))
treeview4_run.py
- from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog
- from PyQt5 import QtCore, QtGui, QtWidgets
- import treeview4
- import treeview_data
- import sys
- import threading
- import time
- class MainCode(QMainWindow, treeview4.Ui_MainWindow):
- list_result_update = QtCore.pyqtSignal([int, int, str])
- def __init__(self):
- QMainWindow.__init__(self)
- treeview4.Ui_MainWindow.__init__(self)
- self.setupUi(self)
- # 设置列宽
- self.treeWidget.setColumnWidth(0, 200)
- _translate = QtCore.QCoreApplication.translate
- self.initial_tree_view(_translate)
- self.treeWidget.expandAll()
- # 用列表触发槽函数
- self.list_result_update.connect(self.modified_treewidget)
- # 线程函数
- self.run()
- def run(self):
- th = threading.Thread(target=self.go_update)
- th.setDaemon(True)
- th.start()
- def initial_tree_view(self, _translate):
- list_objects = []
- test1 = treeview_data.DataCollection()
- test1.set_module({"Test1": "waiting"})
- test1.add_item({"a1": "waiting"})
- test1.add_item({"b1": "waiting"})
- test1.add_item({"c1": "waiting"})
- list_objects.append(test1)
- test2 = treeview_data.DataCollection()
- test2.set_module({"Test2": "waiting"})
- test2.add_item({"a2": "waiting"})
- test2.add_item({"b2": "waiting"})
- test2.add_item({"c2": "waiting"})
- test2.add_item({"d2": "waiting"})
- list_objects.append(test2)
- test3 = treeview_data.DataCollection()
- test3.set_module({"Test3": "waiting"})
- test3.add_item({"a2": "waiting"})
- test3.add_item({"b2": "waiting"})
- test3.add_item({"c2": "waiting"})
- test3.add_item({"d2": "waiting"})
- list_objects.append(test3)
- for object_num, object_module in enumerate(list_objects):
- item_0 = QtWidgets.QTreeWidgetItem(self.treeWidget)
- brush = QtGui.QBrush(QtGui.QColor(176, 165, 172))
- brush.setStyle(QtCore.Qt.SolidPattern)
- item_0.setBackground(0, brush)
- for module_name, module_result in object_module.module.items():
- brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
- brush.setStyle(QtCore.Qt.SolidPattern)
- item_0.setBackground(1, brush)
- self.treeWidget.topLevelItem(object_num).setText(0, _translate("MainWindow", module_name))
- self.treeWidget.topLevelItem(object_num).setText(1, _translate("MainWindow", module_result))
- for item_num, item_dic in enumerate(object_module.items):
- for item_name, item_result in item_dic.items():
- item_1 = QtWidgets.QTreeWidgetItem(item_0)
- self.treeWidget.topLevelItem(object_num).child(item_num).setText(0, _translate("MainWindow",
- item_name))
- self.treeWidget.topLevelItem(object_num).child(item_num).setText(1, _translate("MainWindow",
- item_result))
- def modified_treewidget(self, num_one, num_two, str_one):
- _translate = QtCore.QCoreApplication.translate
- brush = QtGui.QBrush(QtGui.QColor(0, 255, 0))
- brush.setStyle(QtCore.Qt.SolidPattern)
- self.treeWidget.topLevelItem(num_one).child(num_two).setBackground(1, brush)
- self.treeWidget.topLevelItem(num_one).child(num_two).setText(1, _translate(
- "MainWindow",
- str_one))
- def go_update(self):
- time.sleep(1)
- # 更新treeview
- self.list_result_update.emit(1, 1, "aaaaaaa")
- time.sleep(1)
- # 关闭窗口
- self.close()
- if __name__ == "__main__":
- app = QApplication(sys.argv)
- md = MainCode()
- md.show()
- app.exec_()
- # sys.exit(app.exec_())
具体实现效果就是先初始化树结构,等待一秒后改变其中一个的值, 在等待一秒退出窗口。
效果图:
Python基础之PyQt5关闭界面的更多相关文章
- 分析案例:界面提示“基础链接已经关闭:接收时发生错误”----本质为StackOverflow
问题描述: 一个业务复杂.执行时间很长的功能,经常报出“基础链接已经关闭:接收时发生错误”,很是蹊跷... 问题分析: 首先,查阅应用服务器的系统日志,发现问题发生时总是会伴随着w3wp进程崩溃的错误 ...
- Python基础教程(第2版 修订版) pdf
Python基础教程(第2版 修订版) 目录 D11章快速改造:基础知识11.1安装Python11.1.1Windows11.1.2Linux和UNIX31.1.3苹果机(Macintosh)41. ...
- python基础篇(一)
PYTHON基础篇(一) 变量 赋值 输入,输出和导入 A:输入 B:输出 C:导入 运算符 A:算数运算符 B:比较运算符 C:赋值运算符 D:位运算符 E:逻辑运算符 F:成员运算符 G:身份运算 ...
- Python基础教程(第3版)PDF高清完整版免费下载|百度云盘
百度云盘:Python基础教程(第3版)PDF高清完整版免费下载 提取码:gkiy 内容简介 本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基 ...
- python基础全部知识点整理,超级全(20万字+)
目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...
- 【详细】Python基础(一)
@ 目录 前言 1. Python环境的搭建 1.1 python解释器的安装 1.2 pycharm的安装 2. Python基础语法 2.1 基本语法 2.2 数据类型 2.3 标识符与关键字 2 ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- python基础之文件读写
python基础之文件读写 本节内容 os模块中文件以及目录的一些方法 文件的操作 目录的操作 1.os模块中文件以及目录的一些方法 python操作文件以及目录可以使用os模块的一些方法如下: 得到 ...
- Python基础+Pythonweb+Python扩展+Python选修四大专题 超强麦子学院Python35G视频教程
[保持在百度网盘中的, 可以在观看,嘿嘿 内容有点多,要想下载, 回复后就可以查看下载地址,资源收集不易,请好好珍惜] 下载地址:http://www.fu83.cc/ 感觉文章好,可以小手一抖 -- ...
随机推荐
- 我想挑战下我的软肋,动手实现个Spring应用上下文!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 目录 [x] 第 1 章:开篇介绍,我要带你撸 Spring 啦! [x] 第 2 章:小试牛 ...
- 【模拟7.14】B. 熟练剖分(tree) (概率DP)
一道概率神题,考试时没读清题考完看了学长的玄学题解看了好几个小时 首先f[i][j]表示在点 i 为根的子树中,向下最长轻链长度小于等于 j 的概率. 首先递归下去并求出子树大小,然后枚举重儿子,枚举 ...
- Docker启动PostgreSQL时创建多个数据库
1 前言 在文章<Docker启动PostgreSQL并推荐几款连接工具>中我们介绍如何通过Docker来启动PostgreSQL,但只有一个数据库,如果想要创建多个数据库在同一个Dock ...
- Pytest学习笔记7-skip和skipif的使用
前言 在实际的测试中,我们经常会遇到需要跳过某些测试用例的情况,pytest提供了skip和ifskip来跳过测试 下面我们就来通过一些例子看看skip和ifskip具体如何使用吧 skip的用法 使 ...
- PUN丨实用API
原文地址:PUN丨实用API 当前房间人数 int num = PhotonNetwork.CurrentRoom.PlayerCount; 当前脚本是否属于当前玩家 //需继承MonoBehavio ...
- hive学习笔记之六:HiveQL基础
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Zabbix5.0Yum安装
1.1.操作系统配置: 1.操作系统属性(虚拟机下环境): (1)操作系统版本: [root@localhost ~]# cat /etc/redhat-release CentOS Linux re ...
- nginx日志分析及其统计PV、UV、IP
一.nginx日志结构 nginx中access.log 的日志结构: $remote_addr 客户端地址 211.28.65.253 $remote_user 客户端用户名称 -- $time_l ...
- 解决spring boot中文乱码问题
在开发或学习当中,我们不可避免的会碰到中文乱码的问题(好想哭,但还是要保持微笑!) 今天,在学习spring boot中碰到了中文乱码问题. 首先,看了一下workspace是不是设置utf-8默认字 ...
- java.io.CharConversionException: Not an ISO 8859-1 character: [留]
笔记一下 问题代码如下: response.setContentType("text/html;charset=utf-8");ServletOutputStream out = ...