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

news/2024/12/4 20:13:41/

先贴上代码:

# -*- 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 sysclass 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.translateForm.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.closedef 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.closefor 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.ppmy.cn/news/1070616.html

相关文章

java中用HSSFWorkbook生成xls格式的excel(亲测)

SXSSFWorkbook类是用于生成XLSX格式的Excel文件(基于XML格式),而不是XLS格式的Excel文件(基于二进制格式)。 如果你需要生成XLS格式的Excel文件,可以使用HSSFWorkbook类。以下是一个简单的示例&#xff1a…

行业报告|3D感知技术快速发展,打造“机器之眼”,助推各行业加速升级!

原创 | 文 BFT机器人 01 3D视觉感知全栈式平台,硬核实力蓄势待发 1.1 3D视觉感知为“机器之眼”,未来市场空间广阔 3D视觉感知技术充分弥补了2D成像技术的以上不足,可获取空间几何尺寸信息。 过去数十年2D成像技术蓬勃发展,分辨…

安全生产作业现场违规行为识别 opencv

安全生产作业现场违规行为识别算法通过pythonopencv网络模型算法框架设定了各种合规行为和违规行为的模型,安全生产作业现场违规行为识别算法检测到违规行为,将立即进行抓拍并发送告警信息给相关人员,以便及时采取相应的处置措施。OpenCV是一…

前端面试话术集锦第二篇

🚗前端面试集锦目录 💖前端面试话术集锦第一篇💖 💖前端面试话术集锦第二篇💖 本章目录 1. iframe有那些缺点2. WEB标准以及W3C标准是什么?3. xhtml和html有什么区别?4. Doctype作⽤? 严格模式与混杂模式如何区分?它们有何意义?5. ⾏内元素有哪些?块级元素有哪…

strtok, strtok_s(字符串分割符)和memset_s

strtok()函数的原型如下 char *__cdecl strtok(char *_String, const char *_Delimiter)strtok()函数接收两个传入参数,将_String中保存的字符串(待处理字符串),按照_Delimiter中的字符作为分隔符进行分割。如果_String为空&…

Multicast IP Interface

该模块通过多播IPv4和IPv6在UDP上实现CAN和CAN FD消息的传输。此虚拟接口允许在多个进程甚至主机之间进行通信。这与虚拟接口不同,虚拟接口只能在单个进程中传递消息,但不需要网络堆栈。 它在UDP上运行以具有尽可能低的延迟(与使用TCP相反),并且因为正常的IP多播本质上是…

【Golang】go条件编译

交叉编译只是为了能在一个平台上编译出其他平台可运行的程序,Go 作为一个跨平台的语言,它提供的类库势必也是跨平台的,比如说程序的系统调用相关的功能,能根据所处环境选择对应的源码进行编译。让编译器只对满足条件的代码进行编译…

C语言练习题解析:挑战与突破,开启编程新篇章!(1)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐&a…