我正在使用python创建一个项目,它可以像excel一样,因此当我在单元格中输入一些数字时,它将自动计算
从上一个问题开始,我再次尝试了一些代码,但是当我尝试使用一些先前的列值自动计算当前列值时,卡住了。
用于计算PGA值的代码(与IKS相同,只是有些不同) ...
def on_itemChanged(自身,项目):
date.timezone='Europe/London'
什么是正确的方法,以便当公式为(IKS * PGA)时我可以获得GSS值? This is the table
答案 0 :(得分:0)
# Find indexes of column PGA, IKS and GSS
headercount = self.dlg.tableWidget.columnCount()
for x in range(headercount):
headertext = self.tableWidget.horizontalHeaderItem(x).text()
if 'PGA' == headertext:
self.matchcol_pga = x
if 'IKS' == headertext:
self.matchcol_iks = x
if 'GSS' == headertext:
self.matchcol_gss = x
# Set signal and call function on itemChanged
self.tableWidget.itemChanged.connect(self.changeResult)
def changeResult(self, item):
row = item.row()
self.dlg.tableWidget.blockSignals(True)
try:
pga = self.dlg.tableWidget.item(row, self.matchcol_pga).text() # get cell at row, col
iks = self.dlg.tableWidget.item(row, self.matchcol_iks).text() # get cell at row, col
gss = int(pga) * int(iks)
self.dlg.tableWidget.setItem(row, self.matchcol_gss, QTableWidgetItem(str(gss)))
except:
pass
self.dlg.tableWidget.blockSignals(False)
注意:使用blockSignals避免-返回错误:RuntimeError:最大值 调用Python对象时超出了递归深度