|
@@ -38,6 +38,7 @@ from Front.modules import Settings
|
38
|
38
|
from Front.widgets import *
|
39
|
39
|
# main.py
|
40
|
40
|
from Front.back.Program_Run.utils import resource_path # 从 utils.py 导入 resource_path
|
|
41
|
+import gc
|
41
|
42
|
|
42
|
43
|
# IMPORT / GUI AND MODULES AND WIDGETS
|
43
|
44
|
# ///////////////////////////////////////////////////////////////
|
|
@@ -190,20 +191,75 @@ class ElTree(QWidget):
|
190
|
191
|
widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
|
191
|
192
|
|
192
|
193
|
def contextMenuEvent(self, pos):
|
193
|
|
- # 创建右键菜单
|
194
|
|
- context_menu = QMenu(self)
|
195
|
|
-
|
196
|
|
- # 添加删除选项
|
197
|
|
- delete_action = QAction("删除", self)
|
198
|
|
- delete_action.triggered.connect(self.delete_item)
|
199
|
|
- context_menu.addAction(delete_action)
|
200
|
|
-
|
201
|
|
- # 添加导出选项
|
202
|
|
- export_action = QAction("导出", self)
|
203
|
|
- export_action.triggered.connect(self.export_item)
|
204
|
|
- context_menu.addAction(export_action)
|
|
194
|
+ try:
|
|
195
|
+ # 获取当前选中的项目
|
|
196
|
+ items = widgets.allTreeWidget.selectedItems()
|
|
197
|
+ item = items[0]
|
|
198
|
+ if item:
|
|
199
|
+ # 创建右键菜单
|
|
200
|
+ context_menu = QMenu(self)
|
|
201
|
+ if item.parent() is None:
|
|
202
|
+ # 根节点菜单
|
|
203
|
+ action = QAction("删除库", self)
|
|
204
|
+ action.triggered.connect(self.delete_db)
|
|
205
|
+ context_menu.addAction(action)
|
|
206
|
+ elif item.parent().parent() is None:
|
|
207
|
+ # 父节点菜单
|
|
208
|
+ action1 = QAction("删除", self)
|
|
209
|
+ action1.triggered.connect(lambda: self.on_parent_action(item))
|
|
210
|
+ context_menu.addAction(action1)
|
|
211
|
+ else:
|
|
212
|
+ # 子节点菜单
|
|
213
|
+ action = QAction("删除表", self)
|
|
214
|
+ action.triggered.connect(self.delete_item)
|
|
215
|
+ context_menu.addAction(action)
|
|
216
|
+ action2 = QAction("导出", self)
|
|
217
|
+ action2.triggered.connect(self.export_item)
|
|
218
|
+ context_menu.addAction(action2)
|
|
219
|
+ # # 创建右键菜单
|
|
220
|
+ # context_menu = QMenu(self)
|
|
221
|
+ #
|
|
222
|
+ # # 添加删除选项
|
|
223
|
+ # delete_action = QAction("删除", self)
|
|
224
|
+ # delete_action.triggered.connect(self.delete_item)
|
|
225
|
+ # context_menu.addAction(delete_action)
|
|
226
|
+ #
|
|
227
|
+ # # 添加导出选项
|
|
228
|
+ # export_action = QAction("导出", self)
|
|
229
|
+ # export_action.triggered.connect(self.export_item)
|
|
230
|
+ # context_menu.addAction(export_action)
|
|
231
|
+ context_menu.exec(widgets.allTreeWidget.mapToGlobal(pos))
|
|
232
|
+ except:
|
|
233
|
+ pass
|
205
|
234
|
|
206
|
|
- context_menu.exec(widgets.allTreeWidget.mapToGlobal(pos))
|
|
235
|
+ def delete_db(self):
|
|
236
|
+ # 获取当前选中的项目
|
|
237
|
+ selected_items = widgets.allTreeWidget.selectedItems()
|
|
238
|
+ item = selected_items[0]
|
|
239
|
+ dbname = item.text(0)
|
|
240
|
+ dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
|
|
241
|
+ # 确认删除操作
|
|
242
|
+ reply = QMessageBox.question(self, '确认删除', f'确定要删除项目 {dbname} 吗?',
|
|
243
|
+ QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
|
|
244
|
+ if reply == QMessageBox.No:
|
|
245
|
+ return
|
|
246
|
+ try:
|
|
247
|
+ # 从 QTreeWidget 中移除节点
|
|
248
|
+ widgets.allTreeWidget.takeTopLevelItem(widgets.allTreeWidget.indexOfTopLevelItem(item))
|
|
249
|
+ try:
|
|
250
|
+ widgets.qureyTreeWidget.takeTopLevelItem(widgets.allTreeWidget.indexOfTopLevelItem(item))
|
|
251
|
+ except:
|
|
252
|
+ pass
|
|
253
|
+ # 强制垃圾回收
|
|
254
|
+ gc.collect()
|
|
255
|
+ os.remove(dbpath)
|
|
256
|
+ QMessageBox.information(self, '成功', f'项目 {dbname} 中的数据已删除')
|
|
257
|
+ # 刷新树状图
|
|
258
|
+ self.refresh_tree()
|
|
259
|
+ # 模拟点击 Enter 键 实现程序自动刷新的效果
|
|
260
|
+ QTest.keyClick(widgets.allTreeWidget, Qt.Key_Return)
|
|
261
|
+ except Exception as e:
|
|
262
|
+ QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
|
207
|
263
|
|
208
|
264
|
def delete_item(self):
|
209
|
265
|
# 获取当前选中的项目
|
|
@@ -364,20 +420,65 @@ class ElTree1(QWidget):
|
364
|
420
|
widgets.qureyTreeWidget.insertTopLevelItems(0, treeWidgetItems)
|
365
|
421
|
|
366
|
422
|
def contextMenuEvent(self, pos):
|
367
|
|
- # 创建右键菜单
|
368
|
|
- context_menu = QMenu(self)
|
369
|
|
-
|
370
|
|
- # 添加删除选项
|
371
|
|
- delete_action = QAction("删除", self)
|
372
|
|
- delete_action.triggered.connect(self.delete_item)
|
373
|
|
- context_menu.addAction(delete_action)
|
374
|
|
-
|
375
|
|
- # 添加导出选项
|
376
|
|
- export_action = QAction("导出", self)
|
377
|
|
- export_action.triggered.connect(self.export_item)
|
378
|
|
- context_menu.addAction(export_action)
|
|
423
|
+ # 获取当前选中的项目
|
|
424
|
+ try:
|
|
425
|
+ items = widgets.qureyTreeWidget.selectedItems()
|
|
426
|
+ item = items[0]
|
|
427
|
+ if item:
|
|
428
|
+ # 创建右键菜单
|
|
429
|
+ context_menu = QMenu(self)
|
|
430
|
+ if item.parent() is None:
|
|
431
|
+ # 根节点菜单
|
|
432
|
+ action = QAction("删除库", self)
|
|
433
|
+ action.triggered.connect(self.delete_db)
|
|
434
|
+ context_menu.addAction(action)
|
|
435
|
+ elif item.parent().parent() is None:
|
|
436
|
+ # 父节点菜单
|
|
437
|
+ action1 = QAction("删除", self)
|
|
438
|
+ action1.triggered.connect(lambda: self.on_parent_action(item))
|
|
439
|
+ context_menu.addAction(action1)
|
|
440
|
+ else:
|
|
441
|
+ # 子节点菜单
|
|
442
|
+ action = QAction("删除表", self)
|
|
443
|
+ action.triggered.connect(self.delete_item)
|
|
444
|
+ context_menu.addAction(action)
|
|
445
|
+ action2 = QAction("导出", self)
|
|
446
|
+ action2.triggered.connect(self.export_item)
|
|
447
|
+ context_menu.addAction(action2)
|
|
448
|
+ context_menu.exec(widgets.qureyTreeWidget.mapToGlobal(pos))
|
|
449
|
+ except:
|
|
450
|
+ pass
|
379
|
451
|
|
380
|
|
- context_menu.exec(widgets.qureyTreeWidget.mapToGlobal(pos))
|
|
452
|
+ def delete_db(self):
|
|
453
|
+ # 获取当前选中的项目
|
|
454
|
+ selected_items = widgets.qureyTreeWidget.selectedItems()
|
|
455
|
+ item = selected_items[0]
|
|
456
|
+ dbname = item.text(0)
|
|
457
|
+ dbpath = os.path.join(os.path.abspath('../SQL'), f"{dbname}.db")
|
|
458
|
+ # 确认删除操作
|
|
459
|
+ reply = QMessageBox.question(self, '确认删除', f'确定要删除项目 {dbname} 吗?',
|
|
460
|
+ QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
|
|
461
|
+ if reply == QMessageBox.No:
|
|
462
|
+ return
|
|
463
|
+ try:
|
|
464
|
+ # 从 QTreeWidget 中移除节点
|
|
465
|
+ widgets.allTreeWidget.takeTopLevelItem(widgets.allTreeWidget.indexOfTopLevelItem(item))
|
|
466
|
+ try:
|
|
467
|
+ widgets.qureyTreeWidget.takeTopLevelItem(widgets.allTreeWidget.indexOfTopLevelItem(item))
|
|
468
|
+ except:
|
|
469
|
+ pass
|
|
470
|
+ # 强制垃圾回收
|
|
471
|
+ gc.collect()
|
|
472
|
+ #删除路径
|
|
473
|
+ os.remove(dbpath)
|
|
474
|
+ QMessageBox.information(self, '成功', f'项目 {dbname} 中的数据已删除')
|
|
475
|
+ # 清空树状图
|
|
476
|
+ widgets.qureyTreeWidget.clear()
|
|
477
|
+ self.refresh_tree()
|
|
478
|
+ # 模拟点击 Enter 键 实现程序自动刷新的效果
|
|
479
|
+ QTest.keyClick(widgets.qureyTreeWidget, Qt.Key_Return)
|
|
480
|
+ except Exception as e:
|
|
481
|
+ QMessageBox.critical(self, '错误', f'删除数据时出错: {str(e)}')
|
381
|
482
|
|
382
|
483
|
def delete_item(self):
|
383
|
484
|
# 获取当前选中的项目
|