PyQt5表格控件QTableView简介

在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTableView类了,在QTableView中可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源

QTableWidget继承自QTableView,主要区别是QTableView可以使用自定义的数据模型来显示内容(先通setModel来绑定数据源),而QTableWidget自能使用标准的数据模型,并且其单元格数据是通过QTableWidgetItem对象实现的,通常QTableWidget就能够满足我们的要求

QTableView可用的模式

QTableView控件可以绑定一个模型数据用来更新控件上的内容

名称

含义

QStringListModel

储存一组字符串

QstandardItemModel

存储任意层次结构的数据

QDirModel

对文件系统进行封装

QSqlQueryModel

对SQL的查询结果集进行封装

QSqlTableModel

对SQL中的表格进行封装

QSqlRelationalTableModel

对带有foreign key的SQL表格进行封装

QSortFilterProxyModel

对模型中的数据进行排序或过滤

QTableView的使用实例

import sys

from PyQt5.QtCore import *

from PyQt5.QtWidgets import *

from PyQt5.QtGui import *

class Table(QWidget):

def __init__(self,parent=None):

super(Table, self).__init__(parent)

#设置标题与初始大小

self.setWindowTitle('QTableView表格视图的例子')

self.resize(500,300)

#设置数据层次结构,4行4列

self.model=QStandardItemModel(4,4)

#设置水平方向四个头标签文本内容

self.model.setHorizontalHeaderLabels(['标题1','标题2','标题3','标题4'])

# #Todo 优化2 添加数据

# self.model.appendRow([

# QStandardItem('row %s,column %s' % (11,11)),

# QStandardItem('row %s,column %s' % (11,11)),

# QStandardItem('row %s,column %s' % (11,11)),

# QStandardItem('row %s,column %s' % (11,11)),

# ])

for row in range(4):

for column in range(4):

item=QStandardItem('row %s,column %s'%(row,column))

#设置每个位置的文本值

self.model.setItem(row,column,item)

#实例化表格视图,设置模型为自定义的模型

self.tableView=QTableView()

self.tableView.setModel(self.model)

# #todo 优化1 表格填满窗口

# #水平方向标签拓展剩下的窗口部分,填满表格

# self.tableView.horizontalHeader().setStretchLastSection(True)

# #水平方向,表格大小拓展到适当的尺寸

# self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

#

# #TODO 优化3 删除当前选中的数据

# indexs=self.tableView.selectionModel().selection().indexes()

# print(indexs)

# if len(indexs)>0:

# index=indexs[0]

# self.model.removeRows(index.row(),1)

#设置布局

layout=QVBoxLayout()

layout.addWidget(self.tableView)

self.setLayout(layout)

if __name__ == '__main__':

app=QApplication(sys.argv)

table=Table()

table.show()

sys.exit(app.exec_())

运行程序,显示效果如图

从图中可以看出,表格并没有填满窗口,每列都可以自由拉伸,但是可能会出现滚动条

优化1:需要表格填充满窗口,可以添加一下代码

#水平方向标签拓展剩下的窗口部分,填满表格

self.tableView.horizontalHeader().setStretchLastSection(True)

#水平方向,表格大小拓展到适当的尺寸

self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

效果如下

优化2:添加数据

#Todo 优化2 添加数据

self.model.appendRow([

QStandardItem('row %s,column %s' % (11,11)),

QStandardItem('row %s,column %s' % (11,11)),

QStandardItem('row %s,column %s' % (11,11)),

QStandardItem('row %s,column %s' % (11,11)),

])

效果如图

优化3:删除当前选中的数据

indexs=self.tableView.selectionModel().selection().indexes()

print(indexs)

if len(indexs)>0:

index=indexs[0]

self.model.removeRows(index.row(),1)

本文主要介绍了PyQt5表格控件QTableView详细使用方法与实例,更多关于这方面的知识请查看下面的相关链接

python表格控件_python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例...相关推荐

  1. python选项卡控件_python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与...

    PyQt5选项卡控件QTabWidget简介 QTabWidget控件提供了一个选项卡和一个页面区域,默认显示第一个选项卡的页面,通过单击各选项卡可以查看对应的界面,如果在一个窗口中显示的输入字段很多 ...

  2. python menu实例_python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例...

    PyQt5菜单栏控件QMenuBar介绍 QMenuBar在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象 QMenuBar类提供了一个可以包含一个或多个QAc ...

  3. qpython3可视图形界面_python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法...

    QWidget基本介绍 基础窗口控件QWidget类是所有用户界面对象的基类,所有的窗口或者控件都直接或者间接的继承自QWidget类. 窗口坐标系统 PyQt使用统一的坐标系统来定位窗口控件的位置和 ...

  4. pythongui项目实例_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...

    PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 ...

  5. python gui 显示表格_python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例...

    PyQt5表格控件QTableView简介 在通常情况下,一个应用需要和一批数据进行交互,然后以表格的形式输出这些信息,这时就需要用到QTableView类了,在QTableView中可以使用自定义的 ...

  6. python gui控件案例_python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例...

    PyQt5布局控件QHBoxLayout简介 采用QBOXLayout类可以在水平和垂直方向上排列控件,QHBoxLayout和QVBoxLayout类继承自QBoxLayout 采用QHBoxLay ...

  7. pythongui界面实例带注释_python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例...

    PyQt5状态栏控件QStatusBar简介 MainWindow对象在底部保留有一个水平条,作为状态栏(QstatusBar),用于显示永久或临时的状态信息 QStatusBar类中的常用方法 方法 ...

  8. python输出文本框_python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方...

    PyQt5多行文本框控件QTextEdit简介 QTextEdit类是一个多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条,Qtextedit不仅可以用来显 ...

  9. python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...

    PyQt5动态(可拖动控件大小)布局控件QSplitter简介 PyQt还提供了特殊的布局管理器QSplitter.它可以动态地拖动子控件之间的边界,算是一个动态的布局管理器,QSplitter允许用 ...

最新文章

  1. 把自己的思想记录下来
  2. WINCE支持的波斯语的codepages
  3. Jenkins 技术篇-jenkins的下载、安装与配置
  4. 网速提高学习周——系统篇
  5. 驱动提取软件_深入分析施耐德工控软件代码执行漏洞
  6. 本周ASP.NET英文技术文章推荐[10/21 – 10/27]
  7. 前端学习(2613):action的方法
  8. oracle找到表的位置,查看Oracle表中的指定记录在数据文件中的位置
  9. c++ STL平常练习-3
  10. 教室录播系统方案_《课堂教学录播专用教室》建设方案及装备标准
  11. 最新易支付多功能系统源码+全开源
  12. 十天就能缓解颈椎病的保健操(图)
  13. D3D9学习笔记之渲染状态关键字
  14. 矩阵快速幂 NOY 301
  15. 用英雄联盟的方式讲解JavaScript设计模式!
  16. UE5 QRCode插件使用
  17. Java通过itextpdf生成PDF
  18. 冀欧速雨雪传感器OSA-24
  19. SuperMap杯全国高校GIS大赛-桌面与组件开发组学习资料
  20. 一度智信:拼多多正确sku定价方法分享

热门文章

  1. 笔记本电脑设置触摸板双指滑动
  2. KnifeCMSV1.0Beta测试版发布
  3. 全基因组关联分析中上位性检测算法的研究
  4. C语言实现九九乘法表共9行9列,重点考察for循环的掌握情况!
  5. 织梦 ajax 返回,Dede织梦arclist标签+Ajax实现织梦首页分页-叙述织梦
  6. redis php异步队列,基于workerman的redis-queue实现异步邮件队列
  7. 【多标签文本分类】HFT-CNN: Learning Hierarchical Category Structure for Multi-label Short Text Categorization
  8. js、css分别实现元素水平垂直居中
  9. 目标检测--Enhancement of SSD by concatenating feature maps for object detection
  10. 解决AttributeError: module ‘tensorflow_core._api.v2.config‘ has no attribute ‘experimental_list_device