PySide(PyQt),csv文件的显示

1、正常显示csv文件

import sys
import csv
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QWidget

class CSVTableWidgetDemo(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建显示控件
        self.widget = QWidget(self)
        self.widget.setGeometry(100, 100, 300, 300)
        # 创建表格控件
        self.table_widget = QTableWidget(self.widget)
        self.resize(600, 400)

        # 加载 CSV 文件
        self.load_csv("demo.csv")

    def load_csv(self, filename):
        try:
            # 打开 CSV 文件
            with open(filename, newline='', encoding='gbk') as csvfile:
                reader = csv.reader(csvfile)
                csv_data = list(reader)

                # 设置行列数
                self.table_widget.setRowCount(len(csv_data))
                self.table_widget.setColumnCount(len(csv_data[0]))

                # 填充表格数据
                for row_idx, row_data in enumerate(csv_data):
                    for col_idx, col_data in enumerate(row_data):
                        item = QTableWidgetItem(col_data)
                        self.table_widget.setItem(row_idx, col_idx, item)

                # 隐藏行号和列号
                self.table_widget.verticalHeader().setVisible(False)
                self.table_widget.horizontalHeader().setVisible(False)

        except FileNotFoundError:
            print(f"Error: 文件 '{filename}' 未找到.")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = CSVTableWidgetDemo()
    window.show()
    sys.exit(app.exec())

 2、使用uic框架的demo

 在Qt Designer中新建QMainWindow,命名为csvShow.ui。QMainWindow上有两个部件:widget_csv和btn_exit。

使用pyuic工具将ui文件转换为py文件并导入,主脚本:

# encoding: utf-8
import csv

from PySide6.QtCore import QObject, Signal
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidgetItem, QTableWidget
import sys

import csvShow_rc  # 导入需要显示的画面


# 定义需要显示的画面类
class MainWindow(QMainWindow, csvShow_rc.Ui_MainWindow):
    def __init__(self):
        super().__init__()


# 作业函数
class Jobs:
    # 系统的初始化
    @staticmethod
    def start_todo():
        Jobs.load_csv(window1.widget_csv, 'demo.csv')   # 加载和显示csv文件

    # 退出系统前的保存、清理、释放等操作
    @staticmethod
    def before_quit():
        pass

    # 加载和显示csv文件
    @staticmethod
    def load_csv(widget, filename):
        widget.table_widget = QTableWidget(widget)
        widget.table_widget.setFixedSize(widget.width(), widget.height())
        try:
            # 打开 CSV 文件
            with open(filename, newline='', encoding='gbk') as csvfile:
                reader = csv.reader(csvfile)
                csv_data = list(reader)

                # 设置行列数
                widget.table_widget.setRowCount(len(csv_data))
                widget.table_widget.setColumnCount(len(csv_data[0]))

                # 填充表格数据
                for row_idx, row_data in enumerate(csv_data):
                    for col_idx, col_data in enumerate(row_data):
                        item = QTableWidgetItem(col_data)
                        widget.table_widget.setItem(row_idx, col_idx, item)

                # 隐藏行号和列号
                widget.table_widget.verticalHeader().setVisible(False)
                widget.table_widget.horizontalHeader().setVisible(False)

        except FileNotFoundError:
            print(f"Error: 文件 '{filename}' 未找到.")


# 信号连接和槽函数
def signal_slot():
    # slot函数的demo
    def window1_btn_exit_clicked():  # 定义槽函数
        window1.close()

    window1.btn_exit.clicked.connect(window1_btn_exit_clicked)  # 连接信号到槽函数

    # 定义全局信号的槽函数
    def slot_signal1():
        pass

    ui.Signal1.connect(slot_signal1)  # 连接信号到槽函数

    # 退出系统之前的操作
    app.aboutToQuit.connect(Jobs.before_quit)


# #############################主程序##################################
if __name__ == '__main__':
    app = QApplication(sys.argv)


    # #######################项目级别的定义#############################
    class UI(QObject):  # 将项目定义为QObject,用来管理项目级别的信号和变量
        Signal1 = Signal()  # 这是一个全局的信号

        # ###########__init__###############
        def __init__(self):
            super().__init__()


    # ########################本项目的实例化############################
    ui = UI()  # 项目实例化

    # ########################实例化画面###############################
    window1 = MainWindow()  # 画面实例化

    window1.show()  # 显示画面
    window1.setupUi(window1)  # 画面初始化
    Jobs.start_todo()  # 系统的初始化

    # 信号的连接和槽函数
    signal_slot()
    sys.exit(app.exec())

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

improve-前端运行项目内存溢出解决

1.场景 运行项目时,out of memory,内存溢出。导致前端运行需要重启项目。 2.解决 2.1删除缓存 删除依赖包中的cacle临时缓存 2.2 更改项目配置 "scripts": {"serve": "node --max_old_space_size5120 node_modules/vue/cli-s…

C++基础知识:C++内存分区模型,全局变量和静态变量以及常量,常量区,字符串常量和其他常量,栈区,堆区,代码区和全局区

1.C内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的(在编译器中所书写的代码都会存放在这个空间。) 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分…

最优控制公式推导(代数里卡提方程,李雅普诺夫方程,HJB方程)

本文探讨了线性时不变系统(LTI系统)的最优控制问题,特别是线性二次调节器(LQR)问题。通过Hamilton-Jacobi-Bellman (HJB) 方程的推导,求得了系统的最优控制律,并进一步推导了代数里卡提方程&…

书生浦语-大模型平台学习-环境搭建01

任务:完成SSH连接与端口映射并运行hello_world.py 详细步骤详见:https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Linux/readme.md 1、InternStudio介绍 InternStudio 是大模型时代下的云端算力平台。基于 InternLM 组织下的诸多算法库支持…

Win10+Docker环境使用YOLOv8 TensorRT推理加速

这一部分内容和WSL-Ubuntu20.04环境使用YOLOv8 TensorRT推理加速-CSDN博客 是基本相同的,有细微差别我也会在文中指出来。 1.TensorRTX下载 这里使用Wang-xinyu大佬维护的TensorRTX库来对YOLOv8进行推理加速的演示,顺便也验证一下前面环境配置的成果。 github地址:GitHub -…

推荐系统之MIND用户多兴趣网络

目录 引言MIND算法原理1. 算法概述2. 模型结构3. 多兴趣提取层4. 标签感知注意力层 实践应用应用场景1. 电商平台2. 社交媒体3. 视频流媒体4. 内容分发平台 结论 引言 随着大数据和人工智能技术的快速发展,推荐系统已成为电商平台、社交媒体和内容分发平台的重要组成…

写给大数据开发:为什么我们容易不信任数据

目录 1. 产品经理视角:数据优先级低故事与示例伪代码示例 2. 开发者视角:数据任务缺乏技术挑战故事与示例伪代码示例 3. 测试人员视角:数据的不可见性和逻辑复杂性故事与示例伪代码示例 4. 组织文化视角:缺乏数据意识故事与示例伪…

国外UI设计赏析—汽车行业

国外汽车网页设计界面往往展现出几个显著的优点,这些优点不仅提升了用户体验,还增强了品牌形象与产品吸引力。首先,它们注重界面设计的直观性与互动性,通过高清大图、动态效果以及简洁明了的布局,让用户能够一目了然地…

etime:拓展time

拓展C库的time模块,时间格式转换、代码块计时器。

35+打工人:岁月不是枷锁,是经验的徽章

即将8月份上映的电影《逆行人生》以其独特的视角,深刻揭示了一位45岁程序员面对职场年龄歧视的心酸历程,最终选择投身外卖行业的生存抉择。影片不仅触动了观众的心弦,更映射出当下社会就业市场的一隅现实,尤其是在今年应届毕业生人…

[Spring] Spring Web MVC案例实战

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

Qt会议室项目

在Qt中编写会议室应用程序通常涉及到用户界面设计、网络通信、音频/视频处理等方面。以下是创建一个基本会议室应用程序的步骤概述: 项目设置: 使用Qt Creator创建一个新的Qt Widgets Application或Qt Quick Application项目。 用户界面设计&#xff1…

明日周刊-第16期

最近很想去看一场蔡健雅的演唱会,以前从来没去过演唱会。原先是想把第一次机会留给周杰伦的演唱会,但是周董的票太难抢了。 文章目录 一周热点资源分享言论歌曲推荐 一周热点 一、经济与市场 北京二手房价环比上涨: 6月份,北京二…

【Diffusion学习】【生成式AI】Diffusion Model 原理剖析 (2/4) (optional)【公式推导】

文章目录 影像生成模型本质上的共同目标【拟合分布】Maximum Likelihood Estimation VAE 影像生成模型本质上的共同目标【拟合分布】 Maximum Likelihood Estimation VAE

19.x86游戏实战-创建MFC动态链接库

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 工具下载: 链接:https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

【智能算法改进】改进的麻雀搜索算法及其求解旅行商问题

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.改进点 改进发现者更新位置 为了使 SSA 算法能够避开向原点收敛的弊端, 将算法向最优位置跳跃的操作转换为向最优位置的移动: X i ,…

[Java IO] 流原理及流的分类

Java IO 流概念 Java IO(输入/输出)流是Java用于处理输入和输出操作的一种方式。 Java IO 系统主要基于流(Stream)的概念,流是一组有序的数据序列,可以是输入流(从数据源读取数据)或…

DP(4) | 0-1背包 | Java | LeetCode 1049, 494, 474 做题总结

1049. 最后一块石头的重量 II 和 LC 416.分割等和子集 类似 思路(我没有思路): 两块石头相撞,这里没有想到的一个点是,相撞的两个石头要几乎相似 以示例1为例,stones [2,7,4,1,8,1],如果从左到…

【学习笔记】虚幻SkeletalMesh学习(一)基础介绍

文章目录 零、前言一、资源介绍1.1 骨架资源1.2 骨架网格体资源 二、UE4中的定义2.1 骨骼数据2.2 模型网格数据 三、渲染3.1 RenderData的初始化3.2 渲染对象的创建3.3 渲染对象的更新3.3.1 游戏线程的更新(*FSkeletalMeshObjectGPUSkin::Update*)3.3.2 …

java 发送企业域名邮箱消息

目录 通过域名注册邮箱准备添加用户登录 通过java发送企业邮件pom.xml发送代码 企业为了推广本公司的知名度,系统注册邮箱时,发送验证码得邮箱,需要以域名为后缀 通过域名注册邮箱 首选拥有一个企业域名,本文默认大家都有域名 准…