在使用PyQt5里 tableWidget循环删除已生成的全部行数据时,存在数据行不能完全删除的问题,这里给出解决办法
工具/原料
1
PyQt5
2
tableWidget
方法/步骤
2
for rP in range(0, rowPosition): self.tablewidget.removeRow(rP)循环删除,tablewidget 理论上看没问题但实际上是能清除掉一部分,总是有一部分不能正确清除
3
经过仔细研究测试。解决方案如下:采用逆序循环,不能用正序循环!#这句是关键! range(0, rowPosition)[::-1] 逆序循环for rP in range(0, rowPosition)[::-1]: 。。。
4
小结:tablewidget控件循环删除已有行,要用逆序range(0, rowPosition)[::-1]#先获得总行数 rowPosition rowPosition = self.tablewidget.rowCount()#这句是关键! range(0, rowPosition)[::-1] 逆序循环for rP in range(0, rowPosition)[::-1]: self.tablewidget.removeRow(rP)OK了
注意事项
1
需要引入 from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem
2
range(0, rowPosition)[::-1] 逆序循环 最关键