【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.mfbz.cn/a/485588.html

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

相关文章

C语言中的联合和枚举

1、联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。因为所有变量公用…

UE5 LiveLink 自动连接数据源,以及打包后不能收到udp消息的解决办法

为什么要自动连接数据源,因为方便打包后接收数据,这里我是写在了Game Instance,也可以写在其他地方,自行替换成Beginplay和Endplay 关于编辑器模式下能收到udp消息,打包后不能收到消息的问题有两点需要排查,启动打包后…

2024年阿里云轻量应用服务器优惠价格_2核2G_2核4G报价

阿里云轻量应用服务器2核2G和2核4G配置优惠价格表,轻量2核2G3M带宽61元一年,轻量2核4G4M带宽165元1年,均不限制月流量,阿里云活动链接 aliyunfuwuqi.com/go/aliyun 活动打开如下图: 阿里云轻量应用服务器价格 61元/年…

Spring Boot:基础配置

Spring Boot 全局配置文件application.propertiesapplication.yml全局配置文件的优先级 从全局配置文件中获取数据的注解从外部属性文件中获取数据的注解全局配置文件的配置项通用配置项数据源配置项JPA 配置项日志配置项配置文件特定配置项Profile 特定配置项 配置类配置文件中…

C++项目——集群聊天服务器项目(三)muduo网络库

今天来介绍集群聊天器项目中网络模块代码的核心模块——muduo网络库,一起来看看吧~ 环境搭建C项目——集群聊天服务器项目(一)项目介绍、环境搭建、Boost库安装、Muduo库安装、Linux与vscode配置-CSDN博客 Json第三方库C项目——集群聊天服务器项目(二)Json第三方库…

mysql 用户管理-账户管理

学习了《mysql 用户管理-权限表》。接着学习更常用的的账户管理。 2,账户管理 MySQL提供许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。MySQL 数据库的安全性,需要通过账户管…

静态、动态代理模式(Spring学习笔记八)

代理模式是SpringAOC的底层 代理模式分为:静态代理模式 动态代理模式 1、静态代理 代码步骤 接口: package com.li.dedmo01;public interface Rent {public void rent(); }真实角色: package com.li.dedmo01;public class Host imple…

机器学习——贝叶斯分类器(基础理论+编程)

目录 一、理论 1、初步引入 2、做简化 3、拉普拉斯修正 二、实战 1、计算P(c) 2、计算P(x|c) 3、实战结果 1、数据集展示 2、相关信息打印 一、理论 1、初步引入 在所有相关概率都已知的理想情形下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最…

开源流程图表库(01):Mermaid.js生成流程图、时序图、甘特图等

一、Mermaid.js的特点 Mermaid.js是一个用于生成流程图、时序图、甘特图等各种图表的开源库。它使用简洁的文本语法来描述图表结构,并将其转换为可视化的图形。 Mermaid.js的主要特点包括: 简洁易用:Mermaid.js使用简单的文本语法来描述图表…

Introduction to Data Mining 数据挖掘

Why Data Mining? • The Explosive Growth of Data: from terabytes to petabytes — Data collection and data availability ◦ Automated data collection tools, database systems, Web, computerized society — Major sources of abundant data ◦ Business: Web, e-co…

RabbitMQ入门学习【附案例讲解】

文章目录 1.初识MQ1.1.同步和异步通讯1.1.1.同步通讯1.1.2.异步通讯 1.2.技术对比: 2、安装RabbitMQ2.1、下载镜像2.2、单机部署2.3、集群部署 3、基本结构4、RabbitMQ消息模型5、代码示例5.1、导入Demo工程5.2、publisher实现5.3、consumer实现5.4、效果 6、总结 ​…

C++项目——集群聊天服务器项目(四)MySQL数据库

今天来介绍集群聊天器项目中MySQL数据库的相关表结构 集群聊天服务器项目需要进行好友、群组的增删操作以及好友离线状态的判断,需要在数据库中建立相关表进行增删改查操作,因此项目设计了如下五个表,大家可以自己动动小手,使用S…

vulhub中Apache Shiro 1.2.4反序列化漏洞复现(CVE-2016-4437)

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。 Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的…

【蓝桥杯入门记录】中断系统

一、中断概述 (1)处理器和外部设备的数据传输方式 无条件传输:处理器不比为了了解外部设备状态,直接进行数据传输,用于指示灯和蜂鸣器灯等简单设备查询方式:传输前,一方先查询另一方的状态&am…

CVPR 2024中有哪些值得关注的视频生成和视频编辑方向的论文?

Diffusion Models视频生成-博客汇总 前言:轰轰烈烈的CVPR 2024所有accept paper已经全部公开,随着Sora的爆火,视频生成和视频编辑是目前计算机视觉最火热的方向,受到了很多人的关注。这篇博客就整理盘点一下有哪些值得关注的视频生成和视频编辑方向的论文?值得做这个方向的…

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲 1. 企业级标准部署知乎产品wecenter1.1 部署知乎软件Wecenter 2. 企业级迁移数据库到独立服务器2.1 为什么要进行数据库的拆分2.2 数据库拆分架构演变过程,如下图所示2.3 数据库拆分环境规划2.4 数据库拆分架构详细步骤2.4 we…

【计算机网络】启程

📝本文介绍 本文为计算机网路系列的开始篇,会介绍一下使用的书籍和自己做的思维导图。 👋作者简介:一个正在积极探索的本科生 📱联系方式:943641266(QQ) 🚪Github地址:https://githu…

对于组件通信的深刻理解

父组件传递数据给子组件 props传递数据 父组件在子组件的标签上写自定义的属性,属性值是自己的变量,当渲染到子组件时,执行props会找自定义属性,内存了变量的内存,可访问到,写props,会生成vue实例的时候,将props的变量赋给,值找变量内存存入变量.插值语句等可访问.父组件会变…

【ArcGIS微课1000例】0106:ArcGIS制作风向频率(风速)玫瑰图

文章目录 一、效果预览二、加载数据三、创建图表四、图表修饰五、保存图片一、效果预览 在ArcGIS制作的风向频率玫瑰图最终效果如下所示: 二、加载数据 加载配套实验数据包中0106.rar中的excel数据,然后右键→打开。 三、创建图表 1. 创建图表。右击打开属性表,选择表选项…

硅谷甄选项目笔记

硅谷甄选运营平台 此次教学课程为硅谷甄选运营平台项目,包含运营平台项目模板从0到1开发,以及数据大屏幕、权限等业务。 此次教学课程涉及到技术栈包含***:vue3TypeScriptvue-routerpiniaelement-plusaxiosecharts***等技术栈。 一、vue3组件通信方式 通信仓库地…
最新文章