Python Qt学习(一)一个简单的JSON数据预览界面

news2024/11/29 20:48:26

先贴上代码:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'json_converter.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication
import json
import sys

class Ui_Form(object):
    def __init__(self):
        super().__init__()    

    def setupUi(self, Form):
        Form.setObjectName("JSON Viewer")
        Form.resize(1265, 725)
        
        self.label = QtWidgets.QLabel(Form)
        self.label.setObjectName("label")
        self.label.setGeometry(QtCore.QRect(10, 20, 72, 15))


        self.lineEdit = QtWidgets.QLineEdit(Form)
        self.lineEdit.setObjectName("lineEdit")
        self.lineEdit.setEnabled(True)
        self.lineEdit.setGeometry(QtCore.QRect(90, 20, 1061, 21))
        self.lineEdit.setReadOnly(True)

        self.toolButton = QtWidgets.QToolButton(Form)
        self.toolButton.setObjectName("toolButton")
        self.toolButton.setGeometry(QtCore.QRect(1160, 20, 47, 21))
        self.toolButton.clicked.connect(self.getJSONFile)

        self.tableView = QtWidgets.QTableView(Form)
        self.tableView.setGeometry(QtCore.QRect(10, 60, 1241, 611))
        self.tableView.setObjectName("tableView")
        self.tableView.horizontalHeader().setVisible(True)

        self.convertButton = QtWidgets.QPushButton(Form)
        self.convertButton.setObjectName("convertButton")
        self.convertButton.setGeometry(QtCore.QRect(10, 680, 93, 28))        
        self.convertButton.clicked.connect(self.loadJsonFile)

        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setObjectName("pushButton")
        self.pushButton.setGeometry(QtCore.QRect(1160, 680, 93, 28))        
        self.pushButton.clicked.connect(Form.close)



        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
        
    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("JSON Viewer", "JSON Viewer"))
        self.pushButton.setText(_translate("Close", "Close"))
        self.label.setText(_translate("JSON File","JSON File"))
        self.convertButton.setText(_translate("Load JSON File","Load JSON File"))
    
        
    def setColumnHeader(self, columnHeader):
        self.model=QtGui.QStandardItemModel()
        self.model.setHorizontalHeaderLabels(columnHeader)                
        self.tableView.horizontalHeader().setModel(self.model)
        

    def show(self, Form):
        Form.show()
    
    def close(self, Form):
        Form.close
           
    def addTableLine(self,row):
        item=[]
        for i in range(len(row)):
            item.append(QtGui.QStandardItem(row[i]))

        self.model.appendRow(item) 
        self.tableView.setModel(self.model)
    
    def getJSONFile(self):
        fname=QtWidgets.QFileDialog.getOpenFileName(caption="Open file", directory="",filter="Json files (*.json)")        
        self.lineEdit.setText(fname[0])
    
    def loadJsonFile(self):
        fname=self.lineEdit.text()
        f=open(fname,encoding="utf-8")
        header_list=[]
        data=json.load(f)
        f.close

        for i in data['data'][0]:
            header_list.append(i)

        self.setColumnHeader(header_list)
        for i in data['data']:
            item=[]
            for j in i:
                item.append(QtGui.QStandardItem(i[j]))
            self.addTableLine(item)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    Form=QtWidgets.QWidget()    
    main_win = Ui_Form()    
    main_win.setupUi(Form)
    main_win.show(Form)

    sys.exit(app.exec())        
   

项目运行时的截图:

这个项目使用Qt Designer创建的。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python飞机大战小游戏

游戏规则:键盘上下左右键控制飞机移动 游戏展示图片: 源码: 第一个py命名为:plane_main.py import pygamefrom plane_sprites import *class PlaneGame(object):# """飞机大战主游戏"""def __in…

ExpressLRS开源之基本调试数据含义

ExpressLRS开源之基本调试数据含义 1. 源由2. 代码2.1 debugRcvrLinkstats2.2 debugRcvrSignalStats 3. 含义解释3.1 ID(packetCounter),Antenna,RSSI(dBm),LQ,SNR,PWR,FHSS,TimingOffset3.2 IRQ_CNT,RSSI_AVE,SNR_AVE,SNV_MAX,TELEM_CNT,FAIL_CNT 4. 总结5. 参考资料 1. 源由 …

详解 ElasticSearch Kibana 配置部署

默认安装部署所在机器允许外网 SSH工具 Putty 链接:https://pan.baidu.com/s/1b6gumtsjL_L64rEsOdhd4A 提取码:lxs9 Winscp 链接:https://pan.baidu.com/s/1tD8_2knvv0EJ5OYvXP6VTg 提取码:lxs9 WinSCP安装直接下一步到完成…

UE 5 GAS 在项目中通过数据初始化

近期,在制作多角色,考虑到角色和角色之间有很多共用的内容,正常项目中的实现的话,会通过数据的方式去实现角色初始化,接下来介绍一下,我的实现方式。 以上是我设置的相应的数据,上面最简单的名…

设计模式行为模式-命令模式

文章目录 前言定义结构工作原理优点适用场景消息队列模式Demo实现分写业务总结 前言 定义 命令模式(Command Pattern)是一种行为型设计模式,用于将请求封装为对象,从而使你可以使用不同的请求、队列或者日志请求来参数化其他对象…

服务器端污染属性反射提升权限

污染属性反射检测服务器端原型污染 通过服务器端原型污染提升权限 Lab: Privilege escalation via server-side prototype pollution 必要知识点 开发人员很容易陷入的一个陷阱是忘记或忽略 JavaScript 循环迭代对象的所有可枚举属性这一事实,包括它通过原型链继…

医学案例|线性回归

一、案例介绍 某医师预研究糖尿病患者的总胆固醇和甘油三酯对空腹血糖的影响,某研究者调查40名糖尿病患者的总胆固醇、甘油三酯和空腹血糖的测量值如下,试根据上述研究问题作统计分析。 二、问题分析 本案例想要研究一些变量(总胆固醇和甘油…

PocketMiner:基于深度学习发现蛋白的隐式口袋

文章目录 1. 文章简介2. 前言3. 方法3.1 模型框架 4. 结果4.1 已知隐式口袋在分子动力学模拟分析迅速打开4.2 图神经网络模型能够准确预测模拟中口袋的动态变化4.3 隐式口袋数据集数据集揭示了新的隐式口袋形成的模式4.4 PocketMiner能够从无配体的蛋白结构中精准预测预测口袋4…

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据

2007-2022年上市公司污染排放数据/2007-2022年上市公司污染排放水平、污染排放量数据 1、时间:2007-2022年 2、指标:证券代码、year、化学需氧量、氨氮排放量、总氮、总磷、水体综合污染当量对数、二氧化硫、氮氧化物、烟尘、空气综合污染当量对数、总…

小游戏分发平台如何以技术拓流?

2023年,小游戏的发展将受到多方面的影响,例如新技术的引入、参与小游戏的新玩家以及游戏市场的激烈竞争等。首先,新技术如虚拟现实(VR)、增强现实(AR)和机器人技术都可以带来新颖的游戏体验。其…

滑动窗口实例1(长度最小的子数组)

题目: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: …

VC++使用Microsoft Speech SDK进行文字TTS朗读

Microsoft Speech SDK下载地址 https://www.microsoft.com/en-us/download/details.aspx?id=10121 需要msttss22L.exe、SpeechSDK51.exe、SpeechSDK51LangPack.exe三个,下载后全部安装 使用VS2005建立一个win32控制台项目 朗读"hello word"、中文“你好”的程序 …

百科有不需要的信息怎么删除?

百科词条的权威性众所周知,所以百度百科的内容审核也非常严格,百科营销成为目前网络营销工作中一个难点,很多企业无法得到自己完全满意的百度百科词条 ,这其实也是合理的。小马识途营销顾问分析,百科词条内容是提供给广…

10、【WebGIS实战】图层篇——通用服务图层加载全流程(适用于全部图层)

大家好,我是X北辰北。本文是「WebGIS实战」系列,关注这个标签,阅读所有文章,成为WebGIS开发高手。 图层可以理解为添加到地图上面的数据,比如我们要在地图上展示成都市所有大型公园的位置,那么当前地图中除了初始化地图时添加的底图之外,在底图的上面我们还叠加了一份关…

HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)

前言 在使用huggingface把玩各种大模型时,如果选择从远程加载模型,这个过程可能因为网络问题而非常耗时甚至直接失败,所以把模型、分词器等相关文件下载到本地,再直接从本地加载就成了不可回避的流程。 在进入具体版本的模型后&…

新版Mongodb(6.0以上)找不到mongo.exe

安装目录下/bin目录中,没有mongo.exe文件,只有mongod和mongos,以及一个powershell命令脚本。 原因在于,mongodb6.0以后做出了重大改变,mongodb已经不再默认为你安装shell工具,因此需要安装一个额外的shell…

二十二、迭代器模式

一、什么是迭代器模式 迭代器(Iterator)模式的定义:迭代器模式是一种对象行为型模式,它提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。   迭代器模式包含以下主要角色: 抽象聚合&…

字符串匹配的Rabin–Karp算法

leetcode-28 实现strStr() 更熟悉的字符串匹配算法可能是KMP算法, 但在Golang中,使用的是Rabin–Karp算法 一般中文译作 拉宾-卡普算法,由迈克尔拉宾与理查德卡普于1987年提出 “ 要在一段文本中找出单个模式串的一个匹配,此算法具有线性时间的平均复杂度&#xff0…

【XAMPP】启动数据库Error: MySQL shutdown unexpectedly.

问题: 启动MySQL时报错如下: Error: MySQL shutdown unexpectedly. This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to view error logs and check…

SQL-子查询

SQL 子查询 是指将一个SELECT查询(子查询)的结果用括号括起来作为另一个SQL语句的数据来源或者判断条件