PyQt6实战1

创建一个json处理的小工具

功能:

1.json格式化

2.jsonpath提取数据

3.保存文件

main.py

from PyQt6.QtGui import QFocusEvent
from PyQt6.QtWidgets import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
import sys
import json
import time
import os
from parse_json_from_file import JsonUtilclass JSONParser(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.showMaximized()# 创建一个水平布局hlayout = QHBoxLayout(self)inVlayout = QVBoxLayout()inHlayout = QHBoxLayout()jsonLabel = QLabel("jsonPath:")self.jsonPath = QComboBox()self.jsonPath.addItem("$.res.data[0]")self.jsonPath.setEditable(True)self.jsonPath.setCurrentText("")self.jsonPath.setPlaceholderText("请输入jsonPath")inHlayout.setAlignment(Qt.AlignmentFlag.AlignLeft)inHlayout.addWidget(jsonLabel)inHlayout.addWidget(self.jsonPath)inHlayout.setStretchFactor(jsonLabel, 1)inHlayout.setStretchFactor(self.jsonPath, 9)self.input = QTextEdit()self.input.setFocus()inVlayout.addLayout(inHlayout)inVlayout.addWidget(self.input)outVlayout = QVBoxLayout()outHlayout = QHBoxLayout()dirChoose = QPushButton("选择保存路径:")dirChoose.clicked.connect(self.chooseDir)outHlayout.addWidget(dirChoose)self.dirPath = QLabel()outHlayout.addWidget(self.dirPath)outHlayout.setAlignment(Qt.AlignmentFlag.AlignLeft)self.output = QTextEdit()outVlayout.addLayout(outHlayout)outVlayout.addWidget(self.output)midVlayout = QVBoxLayout(self)filterBtn = QPushButton("filter")filterBtn.setToolTip("提取jsonpath")filterBtn.clicked.connect(self.filt)midVlayout.addWidget(filterBtn)formatBtn = QPushButton("format")formatBtn.setToolTip("格式化json")formatBtn.clicked.connect(self.formatJSON)midVlayout.addWidget(formatBtn)self.saveBtn = QPushButton("save")self.saveBtn.setToolTip("按照上面的路径保存文件")self.saveBtn.clicked.connect(self.saveFile)midVlayout.addWidget(self.saveBtn)midVlayout.setAlignment(Qt.AlignmentFlag.AlignCenter)hlayout.addLayout(inVlayout)hlayout.addLayout(midVlayout)hlayout.addLayout(outVlayout)self.setLayout(hlayout)self.setWindowTitle('JSON格式化工具')self.setWindowIcon(QIcon('tools.png'))def chooseDir(self):dir = QFileDialog.getExistingDirectory(self, "选择文件夹")self.dirPath.setText(dir)def formatJSON(self):inputText = self.input.toPlainText()if(inputText):try:jsonText = self._format(inputText)self.output.setText(jsonText)except:self.output.setText("json 格式有问题")def saveFile(self):dirPath = self.dirPath.text()if(not dirPath):QMessageBox.warning(self, "提示", "请先选择文件夹", QMessageBox.StandardButton.Yes)returnfilename = time.strftime("%Y%m%d%H%M%S", time.localtime())file_path = os.path.join(dirPath, filename)if(file_path):with open(file_path, "w", encoding="utf-8") as f:f.write(self.output.toPlainText())def loadFile(self):fileName, _ = QFileDialog.getOpenFileName(self, "打开文件", "", "JSON Files (*.json)")if(fileName):with open(fileName, "r", encoding="utf-8") as f:self.input.setText(f.read())def filt(self):json = self.input.toPlainText()path = self.jsonPath.currentText()format_json = JsonUtil.jsonPathStr(json, path)self.output.setText(format_json)def _format(self, inputText):return json.dumps(json.loads(inputText), indent=4, ensure_ascii=False)if __name__ == '__main__':app = QApplication(sys.argv)demo = JSONParser()demo.show()sys.exit(app.exec())

 工具类

import json
from jsonpath import jsonpathclass JsonUtil:@staticmethoddef jsonPathStr(json_str, json_path):jsonObj = jsonpath(json.loads(json_str), json_path)return json.dumps(jsonObj, indent=4, ensure_ascii=False)

运行main.py即可

运行效果:

format

filter

github:GitHub - chunlaiqingke/Tiny-Tool 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/273259.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有什么针对新闻媒体行业的安全解决方案

对媒体行业而言,门户网站是最易受到攻击的地方。常见的攻击方式有网页篡改、挂马和被植入暗链等。门户网站作为新闻媒体对外的第一扇门,通常承载了大量的流量,一旦遭到攻击,造成的影响会更具有可怕的“传播力”。那么我们应该如何…

【逆向实战 某视频防盗链参数的生成】防盗链cKey的生成,还要补环境?还是单嵌套的webpack?

逆向日期:2024.03.10 使用工具:Node.js 类型:单嵌套Webpack 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算法&#xf…

我们的一生都是在挤火车。

哈喽,你好啊,我是雷工! 昨天从燕郊坐火车回石家庄,由于赶上元旦假期,所有高铁票都售罄,一张普通火车票,还是一周前就买才买到的。 从燕郊站,到北京站,然后地铁去北京西站…

JWT的是什么

session共享 什么是session共享 Session共享是指在分布式系统中,在多个服务器之间共享同一个用户的会话数据。在传统的Web应用中,用户的会话信息通常存储在服务器端的Session中,而每个用户的请求在同一个服务器上处理,因此可以轻…

YOLOV5 初体验:简单猫和老鼠数据集模型训练

1、前言 前两天,通过OpenCV 对猫和老鼠视频的抽取,提取了48张图片。这里不再介绍,可以参考之前的文章:利用OpenCV 抽取视频的图片,并制作目标检测数据集-CSDN博客 数据的目录如下: 项目的下载见文末 2、制…

微信小程序跳转到其他小程序

有两种方式,如下: 一、appid跳转 wx.navigateToMiniProgram({appId: 目标小程序appid,path: 目标小程序页面路径,//不配的话默认是首页//develop开发版;trial体验版;release正式版envVersion: release, success(res) {// 打开成功…

elasticsearch篇

1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近…

登录凭证------

为什么需要登录凭证? web开发中,我们使用的协议http是无状态协议,http每次请求都是一个单独的请求,和之前的请求没有关系,服务器就不知道上一步你做了什么操作,我们需要一个办法证明我没登录过 制作登录凭…

LVS (Linux Virtual server)集群介绍

一 集群和分布式 (一)系统性能扩展方式: Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务 (即升级单机的硬件设备) Scale Out:水平扩展&#xff0…

《Vite 报错》ReferenceError: module is not defined in ES module scope

ReferenceError: module is not defined in ES module scope 解决方案 postcss.config.js 要改为 postcss.config.cjs,也就是 .cjs 后缀。 原因解析 下图提示,packages.json 中的属性 type 设置为 module。所有 *.js 文件现在都被解释为 ESM&#xff…

vscode插件-TONGYILingma

通义灵码,是一款基于通义大模型的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解释、研发智能问答、异常报错排查等能力,并针对阿里云 SDK/API 的使用场景调优,为开发者带来高…

HTML5 Web Worker之性能优化

描述 由于 JavaScript 是单线程的,当执行比较耗时的任务时,就会阻塞主线程并导致页面无法响应,这就是 Web Workers 发挥作用的地方。它允许在一个单独的线程(称为工作线程)中执行耗时的任务。这使得 JavaScript 代码可…

vue iis 配置

下载安装两个IIS模块 1). 传送门:URL Rewrite 2). 传送门:Application Request Routing 注 : 只有在 服务器的主页 有Application Request Routing 部署VUE网站 生成网站 在VUE项目打包生成出发布文件,即文件夹 dist,此处忽略 复制到你需要存放网站的…

Vue 监听器:让你的应用实时响应变化

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

加快代码审查的 7 个最佳实践

目录 前言 1-保持小的拉取请求 2-使用拉取请求模板 3-实施响应时间 SLA 4-培训初级和中级工程师 5-设置持续集成管道 6-使用拉取请求审查应用程序 7-生成图表以可视化您的代码更改 前言 代码审查可能会很痛苦软件工程师经常抱怨审查过程缓慢,延迟下游任务&…

Linux练习题

1、查看后台进程作业ID的指令是(A) A. jobs B. ps C. ls D. pg 2、在Linux系统的vi编辑器中,如果不保存对文件进行的修改,应使用(D )命令强制退出vi编辑器 A. :q B. :wq C. :q! D: :!q 3、列出当前目录下以…

Python实现ETS指标平滑模型(ETSModel算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 ETS模型(Error-Trend-Seasonality Model),是一种广泛应用于时间序列…

QT----云服务器部署Mysql,Navicat连接1698 -Access denied for user ‘root‘@‘‘

阿里云有活动,白嫖了一年的新加坡轻量级服务器,有点卡,有时候要开梯子 白嫖300元优惠券 目录 1 安装启动Mysql服务2 更改连接权限2.1 Navicat连接报错1698 -Access denied for user root 3 qt连接云服务器数据库 1 安装启动Mysql服务 我使用…

算法第二十六天-删除有序数组中的重复项Ⅱ

删除有序数组中的重复项 题目要求 解题思路 题目要求中提到原地修改,那么肯定需要一个指针指向当前即将放置元素的位置,需要另外一个指针向后遍历所有元素,所以[双指针]解法呼之欲出。 慢指针slow:指向当前元素放置的位置&…

深入了解二叉搜索树:原理、实现与应用

目录 一、介绍二叉搜索树 二、二叉搜索树的基本性质 三、二叉搜索树的实现 四、总结 在计算机科学中,数据结构是构建算法和程序的基础。其中,二叉搜索树(Binary Search Tree,简称 BST)作为一种常见的数据结构&#…