Parcourir la source

完成了GC在搜索,查询页面中的展示

wzp il y a 5 mois
Parent
révision
2db2b0ac97
5 fichiers modifiés avec 135 ajouts et 24 suppressions
  1. 104
    0
      Back/GC/GCshow.py
  2. 6
    6
      Back/GS/GSshow.py
  3. 9
    6
      Back/WD/WDshow.py
  4. 13
    9
      Front/main.py
  5. 3
    3
      Front/modules/ui_functions.py

+ 104
- 0
Back/GC/GCshow.py Voir le fichier

@@ -69,3 +69,107 @@ def main_function(ui, db_path, utf_en):
69 69
 
70 70
     # 隐藏 QLabel
71 71
     ui.default_remind.hide()
72
+
73
+
74
+def search_show_function(ui, db_path, utf_en):
75
+    # 确保 utf_en 是字节字符串
76
+    if not isinstance(utf_en, bytes):
77
+        utf_en = utf_en.encode('utf-8')
78
+
79
+    tabs_to_show = [(0, '输入数据'), (2, '水准测段高差计算成果表')]
80
+    for index in range(ui.View.count()):
81
+        visible = index in [t[0] for t in tabs_to_show]
82
+        ui.View.setTabVisible(index, visible)
83
+    for index, text in tabs_to_show:
84
+        ui.View.setTabText(index, text)
85
+
86
+    # 连接到数据库并执行查询
87
+    db1 = sqlite3.connect(db_path)
88
+    db1.text_factory = lambda x: str(x, 'utf-8')
89
+    cursor1 = db1.cursor()
90
+
91
+    # 查询 GC_Input_Point 表中的数据
92
+    input_query = """
93
+    SELECT New_ID, Last_ResultName, Last_SPName, Last_EPName,Last_HDiff,Last_RLen, New_ResultName,  New_SPName, New_EPName,New_HDiff, New_RLen
94
+    FROM GC_Input_Point
95
+    WHERE TableName = ?
96
+    """
97
+    cursor1.execute(input_query, (utf_en,))
98
+    input_result = cursor1.fetchall()
99
+
100
+    # 创建 QStandardItemModel 实例
101
+    input_model = QStandardItemModel()
102
+    input_model.setColumnCount(len(input_result[0]))
103
+
104
+    # 设置表头
105
+    input_headers = ['序号', '上期成果名', '上期测段起点', '上期测段终点', '上期高差', '上期路线长', '本期成果名',
106
+                     '本期测段起点', '本期测段终点',
107
+                     '本期高差', '本期路线长']
108
+    input_model.setHorizontalHeaderLabels(input_headers)
109
+
110
+    for row_data in input_result:
111
+        items = []
112
+        for i, item in enumerate(row_data):
113
+            if item is None:
114
+                item = ""  # 如果是 None,显示空字符串
115
+            else:
116
+                if i in [4, 5, 10, 11]:  # 索引4,5,10,11(高差和路线长)
117
+                    item = f"{item:.6f}"  # 格式化为6位小数
118
+            items.append(QStandardItem(str(item)))
119
+        input_model.appendRow(items)
120
+
121
+    # 设置并展示输入数据表格
122
+    ui.View.setTabText(0, '输入数据')
123
+    ui.resultTableView1.setModel(input_model)
124
+    ui.resultTableView1.show()
125
+    # 隐藏 QLabel
126
+    ui.default_remind1.hide()
127
+
128
+    # 查询 GC_Output_Point 表中的数据
129
+    output_query = """
130
+    SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
131
+    FROM GC_Output_Point
132
+    WHERE TableName = ?
133
+    """
134
+    cursor1.execute(output_query, (utf_en,))
135
+    output_result = cursor1.fetchall()
136
+
137
+    # 创建 QStandardItemModel 实例
138
+    output_model = QStandardItemModel()
139
+    output_model.setColumnCount(len(output_result[0]))
140
+
141
+    # 设置表头
142
+    output_headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
143
+    output_model.setHorizontalHeaderLabels(output_headers)
144
+
145
+    for row_data in output_result:
146
+        items = []
147
+        for i, item in enumerate(row_data):
148
+            if i == 4 or i == 5:  # 索引4(高差)和索引5(路线长)
149
+                item = f"{item:.6f}"  # 格式化为6位小数
150
+            elif i == 6:  # 索引 6(修正数)
151
+                item = f"{item:.2f}"
152
+            elif i == 7:  # 假设 Period_Diff 在索引 7
153
+                if item is not None and isinstance(item, (int, float)):
154
+                    item = f"{item:.2f}"  # 格式化为2位小数
155
+                else:
156
+                    item = ""  # 如果是 None 或非数字类型,显示空字符串
157
+            elif i == 8:  # 假设 Dis_Ass 在索引 8
158
+                if item is not None and isinstance(item, str):
159
+                    item = item  # 显示字符串内容
160
+                else:
161
+                    item = ""  # 如果是 None,显示空字符串
162
+            items.append(QStandardItem(str(item)))
163
+        output_model.appendRow(items)
164
+
165
+    # 设置并展示输出数据表格
166
+    ui.View.setTabText(1, '水准测段高差计算成果表')
167
+    ui.reconTableView1.setModel(output_model)
168
+    ui.reconTableView1.show()
169
+
170
+    # 关闭数据库连接
171
+    cursor1.close()
172
+    db1.close()
173
+
174
+    # 隐藏 QLabel
175
+    ui.default_remind1.hide()

+ 6
- 6
Back/GS/GSshow.py Voir le fichier

@@ -21,7 +21,6 @@ def main_function(ui, db_path, utf_en):
21 21
     # 隐藏 QLabel
22 22
     ui.default_remind.hide()
23 23
 
24
-
25 24
     # 查询表内符合的所有数据(分成两个结果分别显示)
26 25
     # 注意查询中的tablename,数据库中如果没有相同的表名,会报错,所以需要先判断一下
27 26
     # 复测成果表
@@ -85,7 +84,8 @@ li.checked::marker {{ content: "\\2612"; }}
85 84
 
86 85
     ui.printTableView.setHtml(str0)
87 86
 
88
-def main_function1(ui, db_path, utf_en):
87
+
88
+def search_show_function(ui, db_path, utf_en):
89 89
     # 就用已有的选项卡
90 90
     ui.View.setTabVisible(0, True)
91 91
     ui.View.setTabVisible(1, True)
@@ -102,16 +102,17 @@ def main_function1(ui, db_path, utf_en):
102 102
     db1.text_factory = lambda x: str(x, 'utf-8')
103 103
     cursor1 = db1.cursor()
104 104
 
105
-    #输入数据
105
+    # 输入数据
106 106
     sqlstr00 = 'select PointName,Last_X,Last_Y,New_X,New_Y,cgcs from GS_Input_Point WHERE TableName = ?'
107 107
     sqlstr10 = 'select Last_ResultName,New_ResultName,Avg_SL,Ms_Dir,Ms_WSL,SL_Count,Dir_Count,Scale_Value from GS_Input_Param WHERE TableName = ?'
108 108
     cursor1.execute(sqlstr00, (utf_en,))
109 109
     result00 = cursor1.fetchall()
110 110
     cursor1.execute(sqlstr10, (utf_en,))
111 111
     result10 = cursor1.fetchall()
112
-    model0,nlist0 = GS_In_Data(result00,result10[0])
112
+    model0, nlist0 = GS_In_Data(result00, result10[0])
113 113
     model0.setHorizontalHeaderLabels(
114
-        ['点名', '前期X', '前期Y', '本期X', '本期Y','成果次数','上期成果名','本期成果名','平均边长','方向值中误差','最弱边边长相对中误差','总测边数','总方向观测数','缩放值'])
114
+        ['点名', '前期X', '前期Y', '本期X', '本期Y', '成果次数', '上期成果名', '本期成果名', '平均边长', '方向值中误差',
115
+         '最弱边边长相对中误差', '总测边数', '总方向观测数', '缩放值'])
115 116
     model0.setVerticalHeaderLabels(nlist0)
116 117
     # 展示表格
117 118
     ui.resultTableView1.setModel(model0)
@@ -119,7 +120,6 @@ def main_function1(ui, db_path, utf_en):
119 120
     # 隐藏 QLabel
120 121
     ui.default_remind1.hide()
121 122
 
122
-
123 123
     # 查询表内符合的所有数据(分成两个结果分别显示)
124 124
     # 注意查询中的tablename,数据库中如果没有相同的表名,会报错,所以需要先判断一下
125 125
     # 复测成果表

+ 9
- 6
Back/WD/WDshow.py Voir le fichier

@@ -3,7 +3,8 @@ import sqlite3
3 3
 
4 4
 from PySide6.QtGui import QStandardItemModel
5 5
 
6
-#计算结束后的显示
6
+
7
+# 计算结束后的显示
7 8
 def main_function(ui, db_path, utf_en):
8 9
     # 只显示头两个tab
9 10
     ui.tabWidget.setTabVisible(0, True)
@@ -73,7 +74,8 @@ li.checked::marker { content: "\2612"; }
73 74
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt;">          </span><span style=" font-size:14pt; font-weight:700;">X、Y</span><span style=" font-size:14pt;">为""" + str1 + """已知系统的""" + str2 + """归算坐标。</span></p></body></html>"""
74 75
     ui.printTableView.setHtml(str0)
75 76
 
76
-def main_function1(ui, db_path, utf_en):
77
+
78
+def search_show_function(ui, db_path, utf_en):
77 79
     # 只显示头两个tab
78 80
     ui.View.setTabVisible(0, True)
79 81
     ui.View.setTabVisible(1, True)
@@ -94,16 +96,17 @@ def main_function1(ui, db_path, utf_en):
94 96
     cursor1.execute(sqlstr00, (utf_en,))
95 97
     # 获取结果集
96 98
     result0 = cursor1.fetchall()
97
-    #参数部分
99
+    # 参数部分
98 100
     sqlstr10 = 'select First_ResultName,Last_ResultName,New_ResultName,Avg_SL,Ms_Dir,SL_Count,Dir_Count,Scale_Value from WD_Input_Param WHERE TableName = ?'
99 101
     cursor1.execute(sqlstr10, (utf_en,))
100 102
     # 获取结果集
101 103
     result1 = cursor1.fetchall()
102 104
     # 把结果集放进去,把汉字转换过来,添加表头部分
103
-    model0,nlist0 = WD_In_Data(result0,result1[0])
105
+    model0, nlist0 = WD_In_Data(result0, result1[0])
104 106
     # 设置表头(先用统称吧,后期修改)
105 107
     model0.setHorizontalHeaderLabels(
106
-        ['点名', '首期X', '首期Y', '上期X', '上期Y', '权', '本期X', '本期Y','首期成果名','上期成果名','本期成果名','平均边长','方向值中误差','总边数','总方向数','缩放值'])
108
+        ['点名', '首期X', '首期Y', '上期X', '上期Y', '权', '本期X', '本期Y', '首期成果名', '上期成果名', '本期成果名',
109
+         '平均边长', '方向值中误差', '总边数', '总方向数', '缩放值'])
107 110
     model0.setVerticalHeaderLabels(nlist0)
108 111
     # QTableView并将数据模型与之关联
109 112
     ui.resultTableView1.setModel(model0)
@@ -161,4 +164,4 @@ li.checked::marker { content: "\2612"; }
161 164
         n6) + """</span><span style=" font-size:14pt;">)</span></p>
162 165
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt;">式中:</span><span style=" font-size:14pt; font-weight:700; color:#000000;">x、y</span><span style=" font-size:14pt;">为</span><span style=" font-size:14pt; color:#000000;">""" + str2 + """</span><span style=" font-size:14pt;">坐标;</span></p>
163 166
 <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt;">          </span><span style=" font-size:14pt; font-weight:700;">X、Y</span><span style=" font-size:14pt;">为""" + str1 + """已知系统的""" + str2 + """归算坐标。</span></p></body></html>"""
164
-    ui.printTableView1.setHtml(str0)
167
+    ui.printTableView1.setHtml(str0)

+ 13
- 9
Front/main.py Voir le fichier

@@ -15,9 +15,9 @@
15 15
 # ///////////////////////////////////////////////////////////////
16 16
 import time
17 17
 
18
-from PySide6.QtWidgets import QFileDialog,QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
19
-from PySide6.QtCore import Signal,  Qt, Slot, QObject
20
-from PySide6.QtSql import QSqlTableModel,QSqlDatabase
18
+from PySide6.QtWidgets import QFileDialog, QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
19
+from PySide6.QtCore import Signal, Qt, Slot, QObject
20
+from PySide6.QtSql import QSqlTableModel, QSqlDatabase
21 21
 import sqlite3
22 22
 from PySide6.QtGui import QIcon
23 23
 
@@ -43,6 +43,7 @@ project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
43 43
 # 将项目根目录添加到 sys.path
44 44
 sys.path.append(project_root)
45 45
 
46
+
46 47
 # 表格的模型
47 48
 class MyTableModel(QAbstractTableModel):
48 49
     def __init__(self, data):
@@ -65,7 +66,8 @@ class MyTableModel(QAbstractTableModel):
65 66
             return self._data[index.row()][index.column()]
66 67
         return None
67 68
 
68
-#数据一览树状
69
+
70
+# 数据一览树状
69 71
 class TreeWidgetItem:
70 72
     def __init__(self, id: any, parent_id: any, name: str, icon: QIcon = None, extend: object = None):
71 73
         """
@@ -125,6 +127,7 @@ class ElTreeData(QObject):
125 127
         # 数据改变时发出信号
126 128
         self.styleSheet_changed.emit(self.styleSheet)
127 129
 
130
+
128 131
 # 全数据库
129 132
 class ElTree(QWidget):
130 133
     """
@@ -167,6 +170,7 @@ class ElTree(QWidget):
167 170
             # 挂载到树上
168 171
             widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
169 172
 
173
+
170 174
 # 查询
171 175
 class ElTree1(QWidget):
172 176
     """
@@ -266,7 +270,7 @@ class MainWindow(QMainWindow):
266 270
         widgets.upload.clicked.connect(self.buttonClick)
267 271
         # 文件计算
268 272
         widgets.compute.clicked.connect(self.buttonClick)
269
-        #数据一览的搜索键
273
+        # 数据一览的搜索键
270 274
         widgets.search.clicked.connect(self.buttonClick)
271 275
 
272 276
         # 拓展左侧栏
@@ -394,7 +398,7 @@ class MainWindow(QMainWindow):
394 398
             else:
395 399
                 QMessageBox.warning(self, '警告', '请先选择项目并上传文件')
396 400
 
397
-        #树状查询
401
+        # 树状查询
398 402
         if btnName == "search":
399 403
             self.searchClick()
400 404
 
@@ -608,7 +612,7 @@ class MainWindow(QMainWindow):
608 612
             # 数据库路径,哪种方法,表名
609 613
             UIFunctions.search_data_to_show(self, file_path, current_text, str1)
610 614
 
611
-    #搜索的item展示
615
+    # 搜索的item展示
612 616
     def itembuttonClick1(self):
613 617
         # 判定是否获取的是根节点
614 618
         pd = 1
@@ -632,8 +636,8 @@ class MainWindow(QMainWindow):
632 636
             # 数据库目录
633 637
             inpath = os.path.abspath('../SQL')
634 638
             file_path = inpath + '/' + str3 + '.db'
635
-            #数据库路径,哪种方法,表名
636
-            UIFunctions.search_data_to_show(self, file_path,current_text,str1)
639
+            # 数据库路径,哪种方法,表名
640
+            UIFunctions.search_data_to_show(self, file_path, current_text, str1)
637 641
 
638 642
 
639 643
 if __name__ == "__main__":

+ 3
- 3
Front/modules/ui_functions.py Voir le fichier

@@ -367,9 +367,9 @@ class UIFunctions(MainWindow):
367 367
         utf_en = tablename.encode('utf-8')  # 转换文件名为utf-8编码形式
368 368
         # 高差部分我没改
369 369
         if current_text == "水准测段高差稳定计算":
370
-            GCshow.main_function(self.ui, file_path, utf_en)
370
+            GCshow.search_show_function(self.ui, file_path, utf_en)
371 371
         elif current_text == "控制网复测平面基准计算":
372
-            GSshow.main_function1(self.ui, file_path, utf_en)
372
+            GSshow.search_show_function(self.ui, file_path, utf_en)
373 373
         elif current_text == "平面控制网稳定性计算":
374
-            WDshow.main_function1(self.ui, file_path, utf_en)
374
+            WDshow.search_show_function(self.ui, file_path, utf_en)
375 375
     # END - GUI DEFINITIONS

Loading…
Annuler
Enregistrer