为解决TableView内部的表格计算功能,让自己填写/修改的公式与数字能直接像Excel一样进行计算,今天搞了一天。终于实现这项功能。
参数的代入功能:
主要实现的参数为:exec(i),即是将所有参数进行一次公式化转计算
all_parameter = re.sub('\'', '_1', all_parameter)
list_all_parameter = re.split('\n', all_parameter)
print(list_all_parameter)#得到一个列表
for i in list_all_parameter:
try:
exec(i) # 列表内所有计算参数在这里实现赋值
except:
print('公式参数无法转化')
return
参数存入内存以后,即开始进行表内数据的eval(i)
row_n = self.widget_child_insertData_model.rowCount()
# 刷新计算结果:
for i in range(row_n):
try:
result_01 = round(eval(str(self.widget_child_insertData_model.index(i, 4).data())), 8)
result_01 = QStandardItem(str(result_01))
self.widget_child_insertData_model.setItem(i, 6, result_01)
result_02 = round(eval(str(self.widget_child_insertData_model.index(i, 5).data())), 8)
result_02 = QStandardItem(str(result_02))
self.widget_child_insertData_model.setItem(i, 7, result_02)
except:
self.widget_child_insertData_model.setItem(i, 6, QStandardItem('Null'))
self.widget_child_insertData_model.setItem(i, 7, QStandardItem('Null'))
self.insertData_color_the_wrongData(i, 6, self.widget_child_insertData_table)
self.insertData_color_the_wrongData(i, 7, self.widget_child_insertData_table)
多次将数据进行:
str转字符串化—->eval转计算化—->round转两位数值化—–>QStandardItem化,最后载入到model当中,大功告成!
近几日已经将右键菜单全部功能搞定:
最后只差一个“复制”,“粘帖”与Excel进行交互了。
最近开发上了头,得缓,得缓。不然身体搞不住。