Explorar el Código

完成了在最后一个页面上的树状图中单击右键实现导出的功能(输入文件的导出还未完成)

wzp hace 5 meses
padre
commit
a8797ecfc7
Se han modificado 6 ficheros con 76 adiciones y 25 borrados
  1. 7
    2
      Back/GC/GCExport.py
  2. 10
    8
      Back/GS/GSExport.py
  3. 10
    4
      Back/WD/WDExport.py
  4. 46
    8
      Front/main.py
  5. 3
    3
      Front/modules/ui_functions.py
  6. BIN
      SQL/1.db

+ 7
- 2
Back/GC/GCExport.py Ver fichero

@@ -9,11 +9,16 @@ from openpyxl.styles import Font, NamedStyle, Alignment
9 9
 from openpyxl.utils.dataframe import dataframe_to_rows
10 10
 
11 11
 
12
-def main_function(ui, file_path, utf_en, db_path):
13
-    export_folder = os.path.dirname(file_path)
12
+def main_function(ui, utf_en, db_path):
13
+    # 获取应用的安装目录
14
+    app_install_dir = os.path.dirname(os.path.abspath(__file__))  # 假设脚本文件位于应用的安装目录下
15
+    export_folder = os.path.join(app_install_dir, 'Export')
16
+
17
+    # 如果 Export 文件夹不存在,则创建它
14 18
     if not os.path.exists(export_folder):
15 19
         os.makedirs(export_folder)
16 20
 
21
+
17 22
     # 连接数据库
18 23
     conn = sqlite3.connect(db_path)
19 24
 

+ 10
- 8
Back/GS/GSExport.py Ver fichero

@@ -234,14 +234,16 @@ def openpyxl_write(file_name, dbpath, filename):
234 234
 
235 235
 
236 236
 # 主函数 写入excel文件
237
-def main_function(ui, file_path, dbpath, excelname):
238
-    # dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
239
-    # outpath = r'D:\4work_now\20240819GS\JPG\GS成果表.xlsx'
240
-    # file_path = r'D:\4work_now\20240819GS\二滩_20240816.xls'
241
-    file_name = os.path.dirname(file_path)
237
+def main_function(ui, dbpath, excelname):
238
+    # 获取应用的安装目录
239
+    app_install_dir = os.path.dirname(os.path.abspath(__file__))  # 假设脚本文件位于应用的安装目录下
240
+    export_folder = os.path.join(app_install_dir, 'Export')
241
+
242
+    # 如果 Export 文件夹不存在,则创建它
243
+    if not os.path.exists(export_folder):
244
+        os.makedirs(export_folder)
242 245
     try:
243
-        openpyxl_write(file_name, dbpath, excelname)
244
-        QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {file_name}')
246
+        openpyxl_write(export_folder, dbpath, excelname)
247
+        QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
245 248
     except Exception as e:
246 249
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
247
-

+ 10
- 4
Back/WD/WDExport.py Ver fichero

@@ -194,14 +194,20 @@ def openpyxl_write(file_name, dbpath, filename):
194 194
 
195 195
 
196 196
 # 主函数 写入excel文件
197
-def main_function(ui, file_path, dbpath, excelname):
197
+def main_function(ui, dbpath, excelname):
198 198
     # dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
199 199
     # outpath = r'D:\4work_now\20240819GS\JPG\WD成果表.xlsx'
200 200
     # file_path = r'D:\4work_now\20240819GS\test_wd.xls'
201
-    file_name = os.path.dirname(file_path)
201
+    # 获取应用的安装目录
202
+    app_install_dir = os.path.dirname(os.path.abspath(__file__))  # 假设脚本文件位于应用的安装目录下
203
+    export_folder = os.path.join(app_install_dir, 'Export')
204
+
205
+    # 如果 Export 文件夹不存在,则创建它
206
+    if not os.path.exists(export_folder):
207
+        os.makedirs(export_folder)
202 208
     try:
203
-        openpyxl_write(file_name, dbpath, excelname)
204
-        QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {file_name}')
209
+        openpyxl_write(export_folder, dbpath, excelname)
210
+        QMessageBox.information(ui, '成功', f'成果文件已成功导出到 {export_folder}')
205 211
     except Exception as e:
206 212
         QMessageBox.critical(ui, '错误', f'导出过程中发生错误: {str(e)}')
207 213
 

+ 46
- 8
Front/main.py Ver fichero

@@ -178,12 +178,19 @@ class ElTree(QWidget):
178 178
             widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
179 179
 
180 180
     def contextMenuEvent(self, pos):
181
-        print("contextMenuEvent called")  # 调试信息
182 181
         # 创建右键菜单
183 182
         context_menu = QMenu(self)
183
+
184
+        # 添加删除选项
184 185
         delete_action = QAction("删除", self)
185 186
         delete_action.triggered.connect(self.delete_item)
186 187
         context_menu.addAction(delete_action)
188
+
189
+        # 添加导出选项
190
+        export_action = QAction("导出", self)
191
+        export_action.triggered.connect(self.export_item)
192
+        context_menu.addAction(export_action)
193
+
187 194
         context_menu.exec(widgets.allTreeWidget.mapToGlobal(pos))
188 195
 
189 196
     def delete_item(self):
@@ -196,15 +203,13 @@ class ElTree(QWidget):
196 203
         item = selected_items[0]
197 204
         data = item.data(0, Qt.UserRole + 1)
198 205
         if not data:
199
-            QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
206
+            self.warning = QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
200 207
             return
201 208
 
202 209
         # 获取数据库路径和表名
203 210
         dbname = data['listData'][0]
204 211
         tablename = data['listData'][2]
205 212
         dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
206
-        print(dbpath)
207
-        print(tablename)
208 213
 
209 214
         # 确保 tablename 是 UTF-8 编码的字符串
210 215
         try:
@@ -212,7 +217,6 @@ class ElTree(QWidget):
212 217
         except Exception as e:
213 218
             QMessageBox.critical(self, '错误', f'表名编码转换错误: {str(e)}')
214 219
             return
215
-        print(tablename_utf8)
216 220
         # 获取父节点
217 221
         parent_item = item.parent()
218 222
         if not parent_item:
@@ -220,7 +224,6 @@ class ElTree(QWidget):
220 224
             return
221 225
 
222 226
         parent_name = parent_item.text(0)
223
-        print(f"Parent Name: {parent_name}")
224 227
 
225 228
         # 确定要删除的表
226 229
         tables_to_delete = []
@@ -255,7 +258,43 @@ class ElTree(QWidget):
255 258
             self.refresh_tree()
256 259
         except Exception as e:
257 260
             QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
258
-            print(e)
261
+    def export_item(self):
262
+        # 获取当前选中的项目
263
+        selected_items = widgets.allTreeWidget.selectedItems()
264
+        if not selected_items:
265
+            QMessageBox.warning(self, '警告', '请先选择一个项目')
266
+            return
267
+
268
+        item = selected_items[0]
269
+        data = item.data(0, Qt.UserRole + 1)
270
+        if not data:
271
+            QMessageBox.warning(self, '警告', '所选项目没有关联的数据')
272
+            return
273
+
274
+        # 获取数据库路径和表名
275
+        dbname = data['listData'][0]
276
+        tablename = data['listData'][2]
277
+        tablename_utf8 = tablename.encode('utf-8')
278
+        dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
279
+
280
+        # 获取父节点
281
+        parent_item = item.parent()
282
+        if not parent_item:
283
+            QMessageBox.warning(self, '警告', '所选项目没有父节点')
284
+            return
285
+
286
+        parent_name = parent_item.text(0)
287
+
288
+        # 根据父节点名称确定导出操作
289
+        if parent_name == '水准测段高差稳定计算':
290
+            GCExport.main_function(self, tablename_utf8, dbpath)
291
+        elif parent_name == '控制网复测平面基准计算':
292
+            GSExport.main_function(self, dbpath, tablename)
293
+        elif parent_name == '平面控制网稳定性计算':
294
+            WDExport.main_function(self, dbpath, tablename)
295
+        else:
296
+            QMessageBox.warning(self, '警告', '未知的父节点')
297
+            return
259 298
 
260 299
     def refresh_tree(self):
261 300
         # 调用 MainWindow 的 refresh_tree 方法
@@ -309,7 +348,6 @@ class DatabaseChangeHandler(FileSystemEventHandler):
309 348
 
310 349
     def on_modified(self, event):
311 350
         if event.src_path.endswith('.db'):
312
-            print(f"Database file {event.src_path} has been modified.")
313 351
             self.main_window.refresh_tree()
314 352
 
315 353
 

+ 3
- 3
Front/modules/ui_functions.py Ver fichero

@@ -354,11 +354,11 @@ class UIFunctions(MainWindow):
354 354
         excelname = os.path.basename(file_path)  # 文件名
355 355
         utf_en = excelname.encode('utf-8')  # 转换文件名为utf-8编码形式
356 356
         if current_text == "水准测段高差稳定计算":
357
-            GCExport.main_function(self, file_path, utf_en, db_path)
357
+            GCExport.main_function(self, utf_en, db_path)
358 358
         elif current_text == "控制网复测平面基准计算":
359
-            GSExport.main_function(self, file_path, db_path, excelname)
359
+            GSExport.main_function(self, db_path, excelname)
360 360
         elif current_text == "平面控制网稳定性计算":
361
-            WDExport.main_function(self, file_path, db_path, excelname)
361
+            WDExport.main_function(self, db_path, excelname)
362 362
         else:
363 363
             QMessageBox.warning(self, '警告', '请选择有效的计算类型')
364 364
 

BIN
SQL/1.db Ver fichero


Loading…
Cancelar
Guardar