import sqlite3 from PySide6.QtGui import QStandardItemModel, QStandardItem def main_function(ui, db_path, utf_en): # 确保 utf_en 是字节字符串 if not isinstance(utf_en, bytes): utf_en = utf_en.encode('utf-8') # 设置 QTabWidget 的可见性和标签文本 tabs_to_show = [(0, '水准测段高差计算成果表')] for index in range(ui.tabWidget.count()): visible = index in [t[0] for t in tabs_to_show] ui.tabWidget.setTabVisible(index, visible) for index, text in tabs_to_show: ui.tabWidget.setTabText(index, text) # 连接到数据库并执行查询 db1 = sqlite3.connect(db_path) db1.text_factory = lambda x: str(x, 'utf-8') cursor1 = db1.cursor() # 查询 GC_Output_Point 表中的 TableName 字段 query_table_names = "SELECT DISTINCT TableName FROM GC_Output_Point" cursor1.execute(query_table_names) query = """ SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass FROM GC_Output_Point WHERE TableName = ? """ cursor1.execute(query, (utf_en,)) result = cursor1.fetchall() cursor1.close() db1.close() # 创建 QStandardItemModel 实例 model = QStandardItemModel() model.setColumnCount(len(result[0])) # 设置表头 headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定'] model.setHorizontalHeaderLabels(headers) for row_data in result: items = [] for i, item in enumerate(row_data): if i == 4 or i == 5: # 索引4(高差) item = f"{item:.6f}" # 格式化为6位小数 elif i == 6: # 索引 6(修正数) item = f"{item:.2f}" elif i == 7: # 假设 Period_Diff 在索引 7 if item is not None and isinstance(item, (int, float)): item = f"{item:.2f}" # 格式化为2位小数 else: item = "" # 如果是 None 或非数字类型,显示空字符串 elif i == 8: # 假设 Dis_Ass 在索引 8 if item is not None and isinstance(item, str): item = item # 显示字符串内容 else: item = "" # 如果是 None,显示空字符串 items.append(QStandardItem(str(item))) model.appendRow(items) # 设置并展示表格 ui.resultTableView.setModel(model) ui.resultTableView.show() # 隐藏 QLabel ui.default_remind.hide()