Python 如何在QTableWidget中获得项目的自动求和?

Python 如何在QTableWidget中获得项目的自动求和?,python,pyqt,Python,Pyqt,我试图让我的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 it

我试图让我的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列时,总和会增加,而无需首先选择项目来设置总和。

我在更改列数时解决了这个问题

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)
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)

您是否添加了一些选择策略或行为?您所说的“选择策略”是什么意思?我只做了我展示的。我想要当前行第2列到第9列的项目总数。那么您选择的项目是什么?(self.tableWidget.selectedItems())?我希望程序自动选择从第2列添加到第9列的项目,因为值的总和正在增加,并显示在第10hey@和3R50N1列中。非常抱歉。如果编辑单元格,这将不起作用。因此我更新了我的答案