import sqlite3 from PySide6.QtGui import QStandardItemModel from Back.Program_Run.data_show import * def main_function(ui, db_path, utf_en): # 就用已有的选项卡 ui.tabWidget.setTabVisible(0, True) ui.tabWidget.setTabVisible(1, True) ui.tabWidget.setTabVisible(2, True) # 重新设置文字名称 ui.tabWidget.setTabText(0, '复测成果表') ui.tabWidget.setTabText(1, '基准归算模型') ui.tabWidget.setTabText(2, '复测基准归算表') # 连接到数据库 db1 = sqlite3.connect(db_path) db1.text_factory = lambda x: str(x, 'utf-8') cursor1 = db1.cursor() # 查询表内符合的所有数据(分成两个结果分别显示) # 注意查询中的tablename,数据库中如果没有相同的表名,会报错,所以需要先判断一下 # 复测成果表 sqlstr1 = 'select PointName,Last_X,Last_Y,Result_X,Result_Y,Last_ResultX,Last_ResultY,Last_ResultP,Dis_Ass from GS_Result_Point WHERE TableName = ?' cursor1.execute(sqlstr1, (utf_en,)) result1 = cursor1.fetchall() # 基准归算表 sqlstr11 = 'select PointName,Cal_X,Cal_Y,Last_CalX,Last_CalY,Last_CalP,Dis_Ass from GS_Result_Point WHERE TableName = ?' cursor1.execute(sqlstr11, (utf_en,)) result2 = cursor1.fetchall() # 对结果集进行处理,把汉字转换过来, 添加表头部分 nlist1, plist1 = Arrange_Data1(result1) nlist2, plist2 = Arrange_Data2(result2) # 创建一个数据模型(复测成果表) model1 = QStandardItemModel() model1 = Data_in_Cell1(plist1) model1.setHorizontalHeaderLabels( ['点名', '前期X', '前期Y', '本期X', '本期Y', '前期-本期X', '前期-本期Y', '前期-本期P', '位移判定']) model1.setVerticalHeaderLabels(nlist1) # 展示表格 ui.resultTableView.setModel(model1) ui.resultTableView.show() # 隐藏 QLabel ui.default_remind.hide() # 创建一个数据模型(基准归算表) model2 = QStandardItemModel() model2 = Data_in_Cell2(plist2) model2.setHorizontalHeaderLabels( ['点名', '基准归算X', '基准归算Y', '前期-归算X', '前期-归算Y', '前期-归算P', '位移判定']) model2.setVerticalHeaderLabels(nlist2) # 展示表格 ui.reconTableView.setModel(model2) ui.reconTableView.show() # 富文本的html sqlstr2 = 'select Last_ResultName, New_ResultName, Formula_X1, Formula_X2, Formula_X3, Formula_Y1, Formula_Y2, Formula_Y3 from GS_Trans_Param WHERE TableName = ?' cursor1.execute(sqlstr2, (utf_en,)) result3 = cursor1.fetchone() # 检查 result3 是否为 None if result3 is None: str0 = "

未找到相关数据。

" else: str1 = result3[0].decode('utf-8') if isinstance(result3[0], bytes) else result3[0] str2 = result3[1].decode('utf-8') if isinstance(result3[1], bytes) else result3[1] n1, n2, n3, n4, n5, n6 = result3[2], result3[3], result3[4], result3[5], result3[6], result3[7] str0 = f"""

{str2}--{str1}已知系统转换公式:

X=({n1})x+({n2})y+({n3})

Y=({n4})x+({n5})y+({n6})

式中:x、y为{str2}坐标;

X、Y为{str1}已知系统的{str2}归算坐标。

""" ui.printTableView.setHtml(str0)