【PyQt】19-数据操作

数据表

  • 前言
  • 一、显示二维表数据(QTableView控件)
    • 扩展知识---MVC模式
    • 1.1 代码
    • 1.2 运行结果
  • 二、显示列数据(QListView控件)
    • 2.1 代码
    • 2.2 运行结果
    • 2.3 扩展---列表控件(QListWidget)
      • 运行结果
  • 总结


前言


一、显示二维表数据(QTableView控件)

数据表的数据来源是Model
意味着 创建一个数据表【QTableView实例】还需要创建数据源【Model】,然后将两者结合。
类似于MVC模式

扩展知识—MVC模式

MVC(Model-View-Controller)是一种软件架构模式,用于将应用程序的逻辑分成三个部分:模型(Model)、视图(View)和控制器(Controller)。

模型(Model):模型代表应用程序的数据和业务逻辑,负责处理数据的存储、检索和更新。在MVC模式中,模型并不依赖于视图或控制器,这使得它可以独立于用户界面进行测试和修改。
视图(View):视图是用户界面的表示,负责将模型中的数据以用户友好的方式呈现给用户。视图依赖于模型,但不会直接影响数据,通常通过观察模型的变化来更新界面。
控制器(Controller):控制器充当模型和视图之间的桥梁,负责处理用户输入和交互。控制器接收用户的操作,更新模型数据,并通知视图更新以反映这些变化。

MVC模式的目的是将后端数据和前端界面的耦合度降低.

1.1 代码

'''
#Author :susocool
#Creattime:2024/3/24
#FileName:45-二维表
#Description: 创建一个数据表【QTableView实例】并创建数据源【Model】,然后将两者结合。'''
import sys,math
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *class TableView( QWidget ):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('表格控件的使用')self.resize(500,300)self.model = QStandardItemModel(4,3)    # 创建一个标准的4行3列的表格self.model.setHorizontalHeaderLabels(['id','姓名','年龄'])   # 行标题self.tableview = QTableView(self)# 关联QTableView控件和Model模型self.tableview.setModel(self.model)# 添加数据item11 = QStandardItem("001")item12 = QStandardItem("江停")item13 = QStandardItem("33")self.model.setItem(0,0,item11)self.model.setItem(0,1,item12)self.model.setItem(0,2,item13)item21 = QStandardItem("001")item22 = QStandardItem("严峫")item23 = QStandardItem("31")self.model.setItem(2, 0, item21)self.model.setItem(2, 1, item22)self.model.setItem(2, 2, item23)# 布局layout = QVBoxLayout()layout.addWidget(self.tableview)self.setLayout(layout)# 让表格自动调整列宽和行高# self.tableview.resizeColumnsToContents ()# self.tableview.resizeRowsToContents()if __name__ == '__main__':app = QApplication(sys.argv)ui = TableView()ui.show()sys.exit(app.exec_())

1.2 运行结果

在这里插入图片描述

我觉得这个是初次接触到表格的相关控件,值得反复观看。这里有必要区分一下QWidget 和 QMainWindow控件。
在这里插入图片描述

二、显示列数据(QListView控件)

2.1 代码

'''
#Author :susocool
#Creattime:2024/3/24
#FileName:46-显示列数据
#Description: '''
import sys,math
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *class TableView( QWidget ):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('表格控件的使用')self.resize(500,300)listview = QListView()listModel = QStringListModel()self.list = ["列表项1","列表项2","列表项3"]# 关联listModel.setStringList(self.list)listview.setModel(listModel)listview.clicked.connect(self.clicked)layout = QVBoxLayout()layout.addWidget(listview)self.setLayout(layout)def clicked(self,item):QMessageBox.information(self,"QListView","您选择了:"+ self.list[item.row()])if __name__ == '__main__':app = QApplication(sys.argv)ui = TableView()ui.show()sys.exit(app.exec_())

2.2 运行结果

在这里插入图片描述

2.3 扩展—列表控件(QListWidget)

功能更多

'''
#Author :susocool
#Creattime:2024/3/24
#FileName:47-列控件扩展
#Description: '''import sys,math
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *class ListWidgetView( QMainWindow ):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setWindowTitle('列表控件的使用')self.resize(500,300)self.listwidget = QListWidget()# self.listwidget.resize(300,120)self.listwidget.addItem("item1")self.listwidget.addItem("item2")self.listwidget.addItem("item3")self.listwidget.addItem("item4")self.listwidget.addItem("item5")self.setCentralWidget(self.listwidget)self.listwidget.itemClicked.connect(self.clicked)def clicked(self,Index):QMessageBox.information(self,"QListWidget","您选择了:"+self.listwidget.item(self.listwidget.row(Index)).text())if __name__ == '__main__':app = QApplication(sys.argv)ui = ListWidgetView()ui.show()sys.exit(app.exec_())

运行结果

在这里插入图片描述


总结

这篇文章依旧没有总结

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

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

相关文章

STM32使用滴答定时器实现delayms

在STM32上使用SysTick实现jiffies(时间戳)并且实现delay_ms 代码实现: volatile uint32_t jiffies 0; // 用于记录系统运行的jiffies数 void SysTick_Handler(void) {/* 每次SysTick中断,jiffies增加 */jiffies; }uint32_t tick…

unity无法使用道路生成插件Road Architect(ctrl和shift无法标点)

切换一下布局就行了。 附:Road Architect教学地址

游戏引擎中的地形系统

一、地形的几何 1.1 高度图 记录不同定点的高度,对每个网格/顶点应用高度、材质等信息,我们每个顶点可以根据高度改变位移 但是这种方法是不适用于开放世界的。很难直接画出几百万公里的场景 1.2 自适应网格细分 当fov越来越窄的时候,网格…

JavaEE企业级分布式高级架构师课程

教程介绍 本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发…

深度学习pytorch——GPU加速(持续更新)

使用 .to(device),以前使用 .cuda() ,但是现在基本不使用了。 代码示例: 查看电脑GPU运行情况: 使用Ctrl Shift ESC快捷键:

目标检测上的diffusion

1 Title DiffusionDet: Diffusion Model for Object Detection(Shoufa Chen,Peize Sun,Yibing Song,Ping Luo)【ICCV 2023】 2 Conclusion This study proposes DiffusionDet, a new framework that formulates object detection as a denoisin…

吴恩达2022机器学习专项课程(一) 3.3 成本函数的公式

问题预览 模型的参数(w和b)有什么作用?不同的w和b对线性回归模型有什么影响?训练集里的y和线性回归模型预测的y(y帽)的区别是什么?成本函数的作用是什么?成本函数的公式是什么&…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(六)—— 二元分类

政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战演绎 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正! 这篇文章咱们将深度学习应用到另一个常见任务…

STM32学习笔记(6_1)- TIM定时器定时功能原理

无人问津也好,技不如人也罢,都应静下心来,去做该做的事。 最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com 现在开…

(ES6)前端八股文修炼Day2

1. let const var 的区别 var: var 是在 ES5 中引入的声明变量的关键字。 具有函数作用域,而不是块作用域,这意味着使用 var 声明的变量在函数内部是可见的。 变量可以被重复声明,而且变量的值可以在声明前使用,这可能…

jmeter链路压测

比如登录后返回token,业务打印上传的操作需要用到token 线程组中添加登录请求,并执行 1、添加登录并执行,查看结果 2、结果树中下拉选择正则表达式,将token参数和值复制粘贴到下方,将token值改为(.*?)&#xff0…

【Nebula笔记】简介及安装

目录 一、简介 (一) 什么是图数据库 二、安装 (一) 原生安装 (二) Docker & Docker compose 1. Docker安装 Linux Window 2. 部署NebulaGraph (三) to MAC 三、Nebula Graph Studio (一) 版本兼容性 (二) 原生安装 (三) Docker compose (四) 连接Nebula Gra…

python—接口编写部分

最近准备整理一下之前学过的前端小程序知识笔记,形成合集。顺便准备学一学接口部分,希望自己能成为一个全栈嘿嘿。建议关注收藏,持续更新技术文档。 目录 前端知识技能树http请求浏览器缓存 后端知识技能树python_api:flaskflask…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(四)

概览 从上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)我们学到了 Swift 中完全自己撸码实现 SwiftHook 类似功能的基本思路、提出了两个“难关”,并首先解决了其中第一道难题。 在这一篇中,我们将会继续克服各种“艰难险阻”,…

Spark spark-submit 提交应用程序

Spark spark-submit 提交应用程序 Spark支持三种集群管理方式 Standalone—Spark自带的一种集群管理方式,易于构建集群。Apache Mesos—通用的集群管理,可以在其上运行Hadoop MapReduce和一些服务应用。Hadoop YARN—Hadoop2中的资源管理器。 注意&…

STM32微控制器的中断优先级设置对系统性能有何影响?

STM32微控制器的中断优先级设置对系统性能有着显著的影响。正确配置中断优先级可以确保关键任务得到及时响应,提高系统的实时性和可靠性。相反,如果中断优先级设置不当,可能会导致系统响应延迟,甚至出现死锁等问题。本文将详细探讨…

python第三方库的安装,卸载和更新,以及在cmd下pip install安装的包在pycharm不可用问题的解决

目录 第三方库pip安装,卸载更新 1.安装: 2.卸载 3.更新 一、第三方库pip安装,卸载更新 1.安装 pip install 模块名 加镜像下载:pip install -i 镜像网址模块名 常用的是加清华镜像,如 pip install -i https://pyp…

Web前端—浏览器渲染原理

浏览器渲染原理 浏览器渲染原理渲染时间点渲染流水线1. 解析HTML—Parse HTML2. 样式计算—Recalculate Style3. 布局—Layout4. 分层—Layer5. 绘制—Paint6. 分块—Tiling7. 光栅化—Raster8. 画—Draw完整过程 面试题1. 浏览器是如何渲染页面的?2. 什么是 reflow…

每日一题 --- 两两交换链表中的节点[力扣][Go]

两两交换链表中的节点 题目:24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1&a…

基于Java中的SSM框架实现考研指导平台系统项目【项目源码+论文说明】

基于Java中的SSM框架实现考研指导平台系统演示 摘要 应对考研的学生,为了更好的使校园考研有一个更好的环境好好的学习,建议一个好的校园网站,是非常有必要的。提供学生的学习提供一个交流的空间。帮助同学们在学习高数、学习设计、学习统计…