pyqt5的QTableWidget动态添加数据并获取单元格内容

功能粗模如下

在这里插入图片描述

实例化一个Qtable,并设置列数

 		self.table = QtWidgets.QTableWidget()
        self.table.setColumnCount(4)
        self.table.setStyleSheet(
            '''QWidget{min-height: 20px; font-size:10pt;border-radius:3px;background-color:rgb(240,248,255);color: rgb(0,0,0)}''')

setColumnCount(),设置表格的列数,这里要做一个动态添加数据的功能,期望表格行数随数据添加而递增,所以只设置了固定列数。

添加数据按钮,并绑定槽函数

		self.add_btn = QPushButton('添加定时器')
        self.add_btn.setStyleSheet('''QWidget{ min-height: 20px; font-size:10pt; border:2px solid #F76677;border-radius:5px;}
                                                 QWidget:hover{background-color:rgb(225, 225, 225);}
                                                 QWidget:pressed{background-color:rgb(205, 205, 205);}
                                             ''')
        self.add_btn.clicked.connect(lambda: self.add_timer(self.add_btn))

按钮触发函数

    def add_timer(self,btn):
        if len(self.filePathLable.text()) > 0 and (self.filePathLable.text() != "请选择文件夹路径"):
            col_1 = QtWidgets.QTableWidgetItem(self.datatime_week)
            col_2 = QtWidgets.QTableWidgetItem(self.datatime_time)
            col_3 = QtWidgets.QTableWidgetItem(self.filePathLable.text())
            deleteButton = QtWidgets.QPushButton("删除定时器")
            deleteButton.clicked.connect(self.delTimer)
            self.table.insertRow(int(self.table.rowCount()))
            self.table.setItem(self.index, 0, col_1)
            self.table.setItem(self.index, 1, col_2)
            self.table.setItem(self.index, 2, col_3)
            self.table.setCellWidget(self.index, 3, deleteButton)
            self.table.update()
            self.index += 1
        else:
            QtWidgets.QMessageBox.information(self, "提示", "请选择一个目录!", QtWidgets.QMessageBox.Yes)

        self.svn_up()

这里要注意,在

给单元格添加完数据后,表单并不会实时刷新,所以需要用self.table.viewport().update()函数来刷新表单。一开始写的时候,直接给直接给表单添加数据,然后获取单元格值,会发现取不到值,在这里插入图片描述
这是因为在实例化表单对象时,没有设置表单行数,所以此时表单行数为0,取不到数据。
在这里插入图片描述在添加数据前,先添加空白行,rowCount()获取当前表单行数,insertRow(int)在此行后面添加新行,即可解决添加数据的同时获取不到单元格值的问题。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值