PyQt学习(8):QTableView 表格

参考:Qt里面的方法:https://blog.csdn.net/u013366022/article/details/52274776(详细)

https://blog.csdn.net/jia666666/article/details/81624259


QTableView显示二维表数据

流程::需要创建一个QTableView实例和一个数据元Model,然后将两者关联。降低ui和后端数据的耦合度降低

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QWidget,QVBoxLayout,QTableView
from PyQt5.QtGui import QStandardItemModel,QStandardItem

class TableDemo(QWidget):
    def __init__(self):
        super(TableDemo, self).__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('表格')
        self.setGeometry(300,300,400,500)
        layout=QVBoxLayout()
        self.setLayout(layout)

        #设置数据model
        model=QStandardItemModel(3,3)
        model.setHorizontalHeaderLabels(['id','name','age'])

        #t添加数据
        item00=QStandardItem('10')
        item01=QStandardItem('jerry')
        # item02=QStandardItem('19')
        model.setItem(0,0,item00)  #第一行,第一列添加
        model.setItem(0,1,item01)
        # model.setItem(0,2,item02)

        #合并单元格

        table=QTableView()
        table.setModel(model)
        table.setSpan(1,1,1,2) #合并第一行(从0开始其实是第二行)的一,二列

        layout.addWidget(table)

if __name__=='__main__':
    app=QApplication(sys.argv)
    demo=TableDemo()
    demo.show()
    sys.exit(app.exec_())

例二

import sys
from PyQt5.QtWidgets import QApplication,QWidget,QVBoxLayout,QTableView,QHeaderView
from PyQt5.QtGui import QStandardItemModel,QStandardItem


class TableDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setWindowTitle('demo')
        self.setGeometry(300,300,300,200)
        layout=QVBoxLayout()
        self.setLayout(layout)


        #------QStandarItemModel------
        #数据model
        model=QStandardItemModel(3,3) #三行三列
        model.setHorizontalHeaderLabels(['id','name','phone'])
        #添加数据方法一
        data00=QStandardItem('10')
        model.setItem(0,0,data00)
        #方法二
        data=[
            QStandardItem('11'),
            QStandardItem('tom'),
            QStandardItem('20')
        ]
        model.appendRow(data)

        #------QTableView------
        self.table=QTableView()
        #设置表格自适应大小
        self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        #视图关联数据
        self.table.setModel(model)


        #删除选中的单元格一行
        self.table.clicked.connect(lambda:self.removeData(model))

      
        layout.addWidget(self.table)

    def removeData(self,model):
        sender=self.sender()
        index=self.table.currentIndex()
        d=index.data()      #获取选中的数据
        row=index.row()     #获得行
        column=index.column()
        model.removeRows(row,1)
            

if __name__=='__main__':
    app=QApplication(sys.argv)
    demo=TableDemo()
    demo.show()
    sys.exit(app.exec_())

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值