PySide在Qt Designer中使用QTableView 显示表格数据

在 PySide6 中,可以使用 Qt Model View 架构中的 QTableView 部件来显示和编辑表格数据。

 1、创建ui文件

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

2、使用pyuic工具将ui文件转换为py文件并导入

主脚本: 

# encoding: utf-8
import csvfrom PySide6.QtCore import QObject, Signal, QAbstractTableModel, QModelIndex, Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QHeaderView
import sysimport csvShow_rc  # 导入需要显示的画面# 定义需要显示的画面类
class MainWindow(QMainWindow, csvShow_rc.Ui_MainWindow):def __init__(self):super().__init__()# 作业函数
class Jobs:# 系统的初始化@staticmethoddef start_todo():# 打开csv文件并生成表格数据def read_csv(csv_path):try:# 打开 CSV 文件with open(csv_path, newline='', encoding='gbk') as csvfile:reader = csv.reader(csvfile)return list(reader)   # 表格的数据except FileNotFoundError:print(f"Error: 文件未找到.")# 生成表格数据ui.table_data = read_csv('demo.csv')# 设置表格界面ui.table_data[3][6] = '这个是修改后的数据格'Jobs.set_tableView(window1.tableView, ui.table_data)# window1.tableView.setColumnWidth(6, 150)   # 设置列宽# window1.tableView.setRowHeight(0, 200)   # 设置行高# 设置表格界面@staticmethoddef set_tableView(tableView, table_data, vHeader_show=False, hHeader_show=False):model = MyTableModel(table_data)tableView.setModel(model)tableView.verticalHeader().setVisible(vHeader_show)  # 显示或不显示行号和列号tableView.horizontalHeader().setVisible(hHeader_show)# 退出系统前的保存、清理、释放等操作@staticmethoddef before_quit():pass# 表格的模型
class MyTableModel(QAbstractTableModel):def __init__(self, data):super().__init__()self._data = data# 重新定义行数def rowCount(self, parent=QModelIndex()):return len(self._data)# 重新定义列数def columnCount(self, parent=QModelIndex()):return len(self._data[0]) if self._data else 0# 重新定义数据def data(self, index, role=Qt.DisplayRole):if not index.isValid():return Noneif role == Qt.DisplayRole:return self._data[index.row()][index.column()]return None# 信号连接和槽函数
def signal_slot():# slot函数的demodef window1_btn_exit_clicked():  # 定义槽函数window1.close()window1.btn_exit.clicked.connect(window1_btn_exit_clicked)  # 连接信号到槽函数# 定义全局信号的槽函数def slot_signal1():passui.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())

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

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

相关文章

使用IDEA编写lua脚本并运行

下载lua https://github.com/rjpcomputing/luaforwindows/releases 是否创建桌面快捷方式:我们的目标是使用IDEA编写lua脚本,所以不需要勾选。后面需要的话,可以到安装目录下手动创建快捷方式 环境变量自动配置 安装后会自动配置好环境变量…

从零开始读RocketMq源码(五)Consumer消费Message流程解析

目录 前言 准备 拉取服务和重平衡服务启动 初识PullRequest 重平衡服务 对重平衡资源进行排序 MessageQueue消息队列集合来源 Consumer消费者集合数据来源 确实分配资源策略 执行分配策略 初始化ProcessQueue 初始化PullRequest 内存队列填充PullRequest 消息拉取…

TikTok用户必看:代理IP的优缺点深度剖析

在咱们这庞大的网络世界里,TikTok就像是夜空中最亮的星星,吸引着全世界的人们。它不仅仅是个让大家开心的地方,更是个能让不同地方的人互相了解、分享生活的神奇平台。但你有没有想过,要是能让这个连接更顺畅,让TikTok…

h5点击电话号跳转手机拨号

需要使用到h5的 <a>标签 我们首先在<head>标签中添加代码 <meta name"format-detection" content"telephoneyes"/>然后再想要的位置添加代码 <a href"tel:10086"> 点击拨打&#xff1a;10086 </a> 这样功能就实现…

【CSS in Depth 2 精译_019】3.2 CSS 的盒模型

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

LLaMA 数据集

LLaMA的训练数据集来源多样&#xff0c;涵盖了多个不同的数据集和预处理步骤。以下是详细的描述&#xff1a; 公开数据来源和预处理 CommonCrawl [67%]&#xff1a; 使用CCNet管道&#xff08;Wenzek等人&#xff0c;2020年&#xff09;对2017年至2020年间的五个CommonCrawl转…

Vue3 + uni-app 微信小程序:仿知乎日报详情页设计及实现

引言 在移动互联网时代&#xff0c;信息的获取变得越来越便捷&#xff0c;而知乎日报作为一款高质量内容聚合平台&#xff0c;深受广大用户喜爱。本文将详细介绍如何利用Vue 3框架结合微信小程序的特性&#xff0c;设计并实现一个功能完备、界面美观的知乎日报详情页。我们将从…

生成式AI的未来:对话的艺术与代理的实践

生成式 AI 的发展方向&#xff0c;是 Chat 还是 Agent&#xff1f; 随着生成式AI技术的不断进步&#xff0c;关于其未来发展方向的讨论也愈发激烈。究竟生成式AI的未来是在对话系统&#xff08;Chat&#xff09;中展现智慧&#xff0c;还是在自主代理&#xff08;Agent&#x…

《驾驭AI浪潮:伦理挑战与应对策略》

AI发展下的伦理挑战&#xff0c;应当如何应对&#xff1f; 人工智能飞速发展的同时&#xff0c;也逐渐暴露出侵犯数据隐私、制造“信息茧房”等种种伦理风险。随着AI技术在社会各个领域的广泛应用&#xff0c;关于AI伦理和隐私保护问题日趋凸显。尽管国外已出台系列法规来规范…

npm安装依赖包报错,npm ERR! code ENOTFOUND

一、报错现象&#xff1a; npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…

【扁平化多级双向链表】python刷题记录

进入链表的遍历模块了 好复杂的题目描述。。。 DFS深度遍历扁平拼接 """ # Definition for a Node. class Node:def __init__(self, val, prev, next, child):self.val valself.prev prevself.next nextself.child child """class Soluti…

Windows双网卡上网原理以及配置方法

目录 1. 背景 2. IP路由原理 3. windows双网卡上网解决方案 3.1. 基础配置解决方案 3.2. 高阶配置解决方案 1. 背景 在windwos上使用多网卡在工作和生活中是一个常见的操作&#xff0c;比如为了获取内部消息将有线连接到内部局域网中&#xff0c;为而了访问外网又将电脑的…

申请https证书的具体流程

申请HTTPS证书的具体流程通常涉及以下步骤&#xff0c;不过请注意&#xff0c;具体细节可能因不同的证书颁发机构&#xff08;CA&#xff09;而有所差异&#xff1a; 1、确定证书类型&#xff1a; 证书类型&#xff1a;根据需求选择合适的SSL证书类型。常见的有DV&#xff08;…

Windows下使用Cygwin创建rsync服务端

1 下载Cygwin 访问官网Cygwin&#xff0c;点击setup-X86_64.exe即可开始下载 2 安装 前面全部默认。路径可以自己选择&#xff0c;站点选阿里云的&#xff0c;等待安装即可 3 配置 使用打开Cygwin安装后创建的快捷方式窗口&#xff0c;输入下面的指令将windows用户导入到cyg…

如何将几百兆的包优化到几十兆----记一次vue项目的打包优化过程

打包优化 现象 前段时间开发的时候遇到客户反馈的一个问题 界面无法打开&#xff0c;显示白屏&#xff0c;控制台无报错 经过我们在开发环境&#xff0c;测试环境反复测试都没复现出客户的问题&#xff0c;然后我们又不停的在生产环境上找问题&#xff0c;也没复现出来 最…

正点原子imx6uSD卡复制files文件到u盘rootfs的root内失败

进入rootfs的home目录 再进入root&#xff0c;一般是要输入密码的&#xff0c;更改权限&#xff0c;设置全部可以读写&#xff0c;删除原有的文件。再把files文件夹复制过来就行 后面找不带分区&#xff0c;哎。相当于内存卡就是启动u盘&#xff0c;进入了linux系统&#xff0c…

彻底解决idea的编解码问题

一、打开idea,找到Setting,点击File Encoding编解码设置,将以下标红的三个部分全部设置为UTF-8.同理如果你的项目使用的是GBK或者其他编码格式,那么也设置为统一。 二、点击Java Compiler设置补齐-encoding utf-8参数 三、如果你的项目使用到了tomcat,那么需要配置下tomca…

挖矿宝藏之硬盘分区

目录 一、硬盘分区的相关知识 二、主分区、活动分区、扩展分区、逻辑盘和盘符 三、硬盘分区原因 1.减少硬盘空间的浪费 2.便于文件的分类管理 3.有利于病毒的防治 四、硬盘分区的原则 1.方便性 2.实用性 3.安全性 五、利用Diskpart进行分区 1.命令行工具Diskpart …

谷歌浏览器自动填充密码时,el-input样式错乱

使用到谷歌浏览器的记忆功能&#xff0c;选择的内容为浏览器保存的内容时 会导致element-plus的el-input样式改变 只需要增加一个css样式&#xff0c;就可以解决问题 :deep .el-input__inner {box-shadow: 0 0 0 1000px #fff inset; }修改后

Chapter13 深度和法线纹理——Shader入门精要学习笔记

Chapter13 深度和法线纹理 一、深度和法线纹理的原理和获取1.背后的原理①深度纹理②法线纹理 2.如何获取3.查看深度和法线纹理 二、再谈运动模糊1.速度映射2.MotionBlurWithDepthTexture.cs3.MotionBlurShader 三、全局雾效 —— 屏幕后处理1.重建世界坐标interpolatedRay的求…