我试图让我的QTableWidget得到第2列到第9列的项目总和。显然,我可以使用以下代码获取它
self.tableWidget.itemPressed.connect(self.summation)
def summation(self):
row = self.tableWidget.currentRow()
table = QtGui.QTableWidgetItem()
try:
data = sum([int(item.text()) for item in self.tableWidget.selectedItems()])
table.setText(str(data))
except ValueError:
pass
self.tableWidget.setItem(row, 10, table)
我希望在项目输入单元格之后获得总和,并且当项目被填充到第2列到第9列的单元格中时,总和会增加,而不需要首先选择要设置总和的项目。
答案 0 :(得分:0)
class window31(QtWidgets.QMainWindow):
def __init__(self):
super(window31,self).__init__()
self.table=QtWidgets.QTableWidget()
self.setCentralWidget(self.table)
self.table.setColumnCount(11)
self.table.setRowCount(35) #setting initial count
self.table.setHorizontalHeaderLabels(["col "+str(i) for i in range(5)])
for i in range(self.table.rowCount()):
self.table.setItem(i,9,QtWidgets.QTableWidgetItem("0"))
self.table.itemChanged.connect(self.print_it)
self.show()
def print_it(self,no):
if no.column()==9:
return
try:
col9sum=0
for column in range(2,9):
try:
col9sum+=int(self.table.item(no.row(),column).text())
except:
pass
self.table.setItem(no.row(),9,QtWidgets.QTableWidgetItem(str(col9sum)))
except Exception as E:
print(E)
app=QtWidgets.QApplication([])
ex=window31()
sys.exit(app.exec_())
#time.sleep(5)
答案 1 :(得分:0)
我在改变列数
后的某个时候解决了这个问题column = self.tableWidget.columnCount()
col = (column - 1)
row = self.tableWidget3.currentRow()
num = self.tableWidget3.item(row, 1).text()
num2 = self.tableWidget3.item(row, 2).text()
num3 = self.tableWidget3.item(row, 3).text()
num4 = self.tableWidget3.item(row, 4).text()
num5 = self.tableWidget3.item(row, 5).text()
add = int(num) + int(num2) + int(num3) + int(num4) + int(num5)
table = QtGui.QTableWidgetItem()
table.setText(str(add))
self.tableWidget.setItem(row, col, table)