PyQt5高级界面控件之QTableView(一)

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)

这里写图片描述

相关文件及下载地址

https://download.csdn.net/download/jia666666/10609488

  • 42
    点赞
  • 240
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: PyQt5是一个基于Qt的Python GUI开发框架,提供了丰富的GUI组件和工具库,MySQL是一个广泛应用的关系型数据库管理系统。PyQt5和MySQL结合起来可以实现MySQL数据库的可视化操作界面。 在实现PyQt5 MySQL界面化的过程中,我们可以采用一些常用的工具库,例如PyMySQL和QSqlTableModel。PyMySQL是一个用于Python的MySQL数据库连接库,可以实现与MySQL的交互与操作,使PyQt5能够与MySQL进行连接。而QSqlTableModel是PyQt5自带的模型类,主要用于与数据库表进行交互,这样我们就可以在PyQt5界面上显示和编辑MySQL数据库中的数据。 在使用PyQt5和MySQL进行连接和数据交互时,需要配置数据库连接信息,包括MySQL服务器IP地址、端口、用户名、密码等信息,并创建表格模型对象,使用模型对象对MySQL数据库中的表进行CRUD操作。在界面设计方面,我们可以使用PyQt5中的控件(例如QTableView、QPushButton、QLineEdit)和布局管理器(例如QHBoxLayout和QVBoxLayout)实现简单且美观的可视化操作界面PyQt5 MySQL界面化可以帮助我们更加方便地管理和操作MySQL数据库,具有良好的用户体验和可扩展性,可以为开发人员和企业提供更多的应用场景和商业价值。 ### 回答2: PyQt5是一个Python编程语言下的GUI(图形用户界面)工具包,其主要功能是提供创建图形交互界面的API和库。同时,MySQL是一种常用的开源关系型数据库管理系统。 如果需要将PyQt5与MySQL相结合,以实现对数据库的访问和操作,可以通过使用PyMySQL库实现。这个库可以连接到MySQL数据库,并允许与MySQL服务器交互,例如执行查询、修改或删除操作。 接下来需要创建一个GUI程序,在 PyPlot 或 PyQT5 中实现界面操作。首先需要设置连接属性,包括MySQL的用户名、密码和数据库名称等基本信息。然后需要在GUI界面添加一些控件,例如按钮、文本框和表格等,并配置事件响应函数,以实现对MySQL数据库的操作。 例如,在PyQt5中可以使用QTableWidget创建一个表格,通过调用PyMySQL库中的函数,将查询结果填入表格中。同时,可以使用QLineEdit控件实现用户输入参数,并通过PyMySQL库将其传递给MySQL服务器。 PyQt5和MySQL的结合可以实现一个强大的图形式数据库编辑器,让用户方便地浏览、管理和分析数据。 ### 回答3: PyQt5是一个Python编程语言的GUI开发框架,可以很方便的开发出跨平台的GUI应用程序。MySQL是一款免费、开源的关系型数据库管理系统,可以用来存储和管理大量的数据。将两者结合起来,可以使得用户在图形化界面操作MySQL数据库,这就是pyqt5 mysql界面化。 在实现pyqt5 mysql界面化的过程中,需要使用到PyQt5和MySQL的库。PyQt5库提供了对GUI的支持,而对于MySQL的操作,可以使用Python标准库中的MySQLdb库或者是PyMySQL库。在使用PySQL库进行MySQL的操作时,需要注意保证MySQLdb库或者PyMySQL库在Python的运行环境中安装好。 在开发界面时,可以使用PyQt5提供的Qt Designer工具,可视化的进行界面设计。在界面中可以添加按钮、文本框、表格等组件,通过PyQt5的信号槽机制,将这些组件与MySQL的操作进行绑定。当用户在界面上点击按钮或者提交了查询信息时,就可以调用MySQL的操作进行数据的增删改查操作了。 在实现pyqt5 mysql界面化时,需要注意保证程序的安全性和稳定性。应该遵循最小权限原则,保证只有经过授权的用户才能进行访问数据库。对于用户输入的数据,也需要进行合法性验证和SQL注入的过滤,防止出现安全漏洞。 总之,pyqt5 mysql界面化是一个实现复杂功能的好方法。它让用户可以在一张漂亮的图形界面操作数据库,从而提高了效率和便捷性。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jia666666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值