浏览代码

20241217存档 实现左半边全部显示,折叠展开,搜索栏搜索功能

rmy 5 个月前
父节点
当前提交
af124178e2
共有 1 个文件被更改,包括 76 次插入25 次删除
  1. 76
    25
      Front/main_new.py

+ 76
- 25
Front/main_new.py 查看文件

67
         return None
67
         return None
68
 
68
 
69
 class TreeWidgetItem:
69
 class TreeWidgetItem:
70
-    def __init__(self, id: any, parent_id: any, name: str, icon: QIcon = None, extend: object = None):
70
+    def __init__(self, id: any, parent_id: any, name: str,icon: QIcon = None, extend: object = None):
71
         """
71
         """
72
         菜单数据接口
72
         菜单数据接口
73
         :param id: ID
73
         :param id: ID
83
         # 实例化
83
         # 实例化
84
         self.treeWidgetItem = QTreeWidgetItem([self.name])
84
         self.treeWidgetItem = QTreeWidgetItem([self.name])
85
         # 存储相关数据
85
         # 存储相关数据
86
-        self.treeWidgetItem.setData(0, Qt.UserRole + 1, extend)
86
+        self.treeWidgetItem.setData(0, Qt.UserRole + 1,extend )
87
         self.treeWidgetItem.setIcon(0, QIcon(':/icons/default.png'))
87
         self.treeWidgetItem.setIcon(0, QIcon(':/icons/default.png'))
88
         if icon is not None:
88
         if icon is not None:
89
             self.treeWidgetItem.setIcon(0, icon)
89
             self.treeWidgetItem.setIcon(0, icon)
233
         self.data = sqltree
233
         self.data = sqltree
234
         # 将按钮的点击信号绑定到当前类的点击信号
234
         # 将按钮的点击信号绑定到当前类的点击信号
235
         # 信号改为展示方法,这里同导出展示
235
         # 信号改为展示方法,这里同导出展示
236
-        widgets.allTreeWidget.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
236
+        # widgets.allTreeWidget.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
237
+        widgets.allTreeWidget.itemClicked.connect(self.test_method)
237
         widgets.allTreeWidget.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
238
         widgets.allTreeWidget.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
238
         self.__render_items(True)
239
         self.__render_items(True)
239
 
240
 
240
         self.bind()
241
         self.bind()
241
 
242
 
243
+    def test_method(self):
244
+        print('ok')
242
 
245
 
246
+    #绑定组件
247
+    def bind(self):
248
+        # 计算
249
+        widgets.compute.clicked.connect(self.computeClick)
250
+        widgets.search.clicked.connect(self.searchClick)
251
+
252
+    #全部
243
     def __render_items(self, is_clear: bool):
253
     def __render_items(self, is_clear: bool):
244
         if is_clear:
254
         if is_clear:
245
             widgets.allTreeWidget.clear()
255
             widgets.allTreeWidget.clear()
256
+            widgets.qureyTreeWidget.clear()
246
         widgets.allTreeWidget.setColumnCount(1)
257
         widgets.allTreeWidget.setColumnCount(1)
247
         widgets.allTreeWidget.setHeaderHidden(True)
258
         widgets.allTreeWidget.setHeaderHidden(True)
259
+        widgets.qureyTreeWidget.setColumnCount(1)
260
+        widgets.qureyTreeWidget.setHeaderHidden(True)
248
         if self.data.items is not None:
261
         if self.data.items is not None:
249
             # 转为字典
262
             # 转为字典
250
             mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
263
             mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
261
             # 挂载到树上
274
             # 挂载到树上
262
             widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
275
             widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
263
 
276
 
277
+    #搜索
278
+    def __render_items1(self, is_clear: bool):
279
+        if is_clear:
280
+            widgets.qureyTreeWidget.clear()
281
+        widgets.qureyTreeWidget.setColumnCount(1)
282
+        widgets.qureyTreeWidget.setHeaderHidden(True)
283
+        if self.data.items is not None:
284
+            # 转为字典
285
+            mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
286
+            # 树容器
287
+            treeWidgetItems: list[QTreeWidgetItem] = []
288
+            for d in self.data.items:
289
+                # 如果找不到父级项,则是根节点
290
+                parent: TreeWidgetItem = mapping.get(d.parent_id)
291
+                if parent is None:
292
+                    treeWidgetItems.append(d.treeWidgetItem)
293
+                else:
294
+                    parent.treeWidgetItem.addChild(d.treeWidgetItem)
295
+
296
+            # 挂载到树上
297
+            widgets.qureyTreeWidget.insertTopLevelItems(0, treeWidgetItems)
298
+
299
+
264
 
300
 
265
-    #绑定组件
266
-    def bind(self):
267
-        # 计算
268
-        widgets.compute.clicked.connect(self.computeClick)
269
-        widgets.search.clicked.connect(self.searchClick)
270
 
301
 
271
     #删除tableview
302
     #删除tableview
272
     def delete_table_view(table_view):
303
     def delete_table_view(table_view):
518
 
549
 
519
     #设一个全局变量,存数据库中所有的包含内容(数据库-三种方法-表)
550
     #设一个全局变量,存数据库中所有的包含内容(数据库-三种方法-表)
520
     dblist = []
551
     dblist = []
521
-    global dblist
522
     #初始化数据一览(数据库全展示)
552
     #初始化数据一览(数据库全展示)
523
     def sql_init(self):
553
     def sql_init(self):
524
         #初始化全部数据库
554
         #初始化全部数据库
552
             result1 = cursor1.fetchall()
582
             result1 = cursor1.fetchall()
553
             for re1 in result1:
583
             for re1 in result1:
554
                 str1 = re1[0].decode('utf-8')
584
                 str1 = re1[0].decode('utf-8')
555
-                sqlitem.append(TreeWidgetItem(id, gcid, str1, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend=str1))
585
+                sqlitem.append(TreeWidgetItem(id, gcid, str1, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
556
                 list1 = []
586
                 list1 = []
557
                 list1.append(dbname)
587
                 list1.append(dbname)
558
                 list1.append('水准测段高差稳定计算')
588
                 list1.append('水准测段高差稳定计算')
559
                 list1.append(str1)
589
                 list1.append(str1)
560
-                dblist.append(list1)
590
+                self.dblist.append(list1)
561
                 id = id + 1
591
                 id = id + 1
562
             sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
592
             sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
563
             cursor1.execute(sqlstr2)
593
             cursor1.execute(sqlstr2)
564
             result2 = cursor1.fetchall()
594
             result2 = cursor1.fetchall()
565
             for re2 in result2:
595
             for re2 in result2:
566
                 str2 = re2[0].decode('utf-8')
596
                 str2 = re2[0].decode('utf-8')
567
-                sqlitem.append(TreeWidgetItem(id, gsid, str2, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend=str2))
597
+                sqlitem.append(TreeWidgetItem(id, gsid, str2, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
568
                 list2 = []
598
                 list2 = []
569
                 list2.append(dbname)
599
                 list2.append(dbname)
570
                 list2.append('控制网复测平面基准计算')
600
                 list2.append('控制网复测平面基准计算')
571
                 list2.append(str2)
601
                 list2.append(str2)
572
-                dblist.append(list2)
602
+                self.dblist.append(list2)
573
                 id = id + 1
603
                 id = id + 1
574
             sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
604
             sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
575
             cursor1.execute(sqlstr3)
605
             cursor1.execute(sqlstr3)
576
             result3 = cursor1.fetchall()
606
             result3 = cursor1.fetchall()
577
             for re3 in result3:
607
             for re3 in result3:
578
                 str3 = re3[0].decode('utf-8')
608
                 str3 = re3[0].decode('utf-8')
579
-                sqlitem.append(TreeWidgetItem(id, wdid, str3, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend=str3))
609
+                sqlitem.append(TreeWidgetItem(id, wdid, str3, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
580
                 list3 = []
610
                 list3 = []
581
                 list3.append(dbname)
611
                 list3.append(dbname)
582
                 list3.append('平面控制网稳定性计算')
612
                 list3.append('平面控制网稳定性计算')
583
                 list3.append(str3)
613
                 list3.append(str3)
584
-                dblist.append(list3)
614
+                self.dblist.append(list3)
585
                 id = id + 1
615
                 id = id + 1
586
         return sqlitem
616
         return sqlitem
587
 
617
 
588
     #关键词查询
618
     #关键词查询
589
-    def sql_search(self):
619
+    def searchClick(self):
590
         # GET BUTTON CLICKED
620
         # GET BUTTON CLICKED
591
         btn = self.sender()
621
         btn = self.sender()
592
         btnName = btn.objectName()
622
         btnName = btn.objectName()
595
         #符合的list
625
         #符合的list
596
         fhlist = []
626
         fhlist = []
597
         #查询(待优化)
627
         #查询(待优化)
598
-        for list1 in dblist:
628
+        for list1 in self.dblist:
599
             for li in list1:
629
             for li in list1:
600
                 if text1 in li:
630
                 if text1 in li:
601
                     fhlist.append(list1)
631
                     fhlist.append(list1)
608
         id = 1
638
         id = 1
609
         pid = 0
639
         pid = 0
610
         fid = 0
640
         fid = 0
641
+        zdy = []
611
         for list2 in fhlist:
642
         for list2 in fhlist:
612
             dbname = list2[0]
643
             dbname = list2[0]
613
             if dbname != str1:
644
             if dbname != str1:
614
                 str1 = dbname
645
                 str1 = dbname
646
+                pid = id
647
+                str2 = ''
615
                 sqlitem.append(TreeWidgetItem(id, 0, dbname, icon=QIcon(
648
                 sqlitem.append(TreeWidgetItem(id, 0, dbname, icon=QIcon(
616
                     "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-clone.png")))
649
                     "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-clone.png")))
617
-                pid = id
650
+            zdy1 = []
651
+            zdy1.append(id)
652
+            zdy1.append(0)
653
+            zdy1.append(dbname)
654
+            zdy.append(zdy1)
618
             id = id + 1
655
             id = id + 1
619
             mename = list2[1]
656
             mename = list2[1]
620
             if mename != str2:
657
             if mename != str2:
621
                 str2 = mename
658
                 str2 = mename
659
+                fid = id
622
                 sqlitem.append(TreeWidgetItem(id, pid, mename, icon=QIcon(
660
                 sqlitem.append(TreeWidgetItem(id, pid, mename, icon=QIcon(
623
                     "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-description.png")))
661
                     "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-description.png")))
624
-                fid = id
662
+            zdy1 = []
663
+            zdy1.append(id)
664
+            zdy1.append(pid)
665
+            zdy1.append(mename)
666
+            zdy.append(zdy1)
625
             id = id + 1
667
             id = id + 1
626
             sqlitem.append(TreeWidgetItem(id, fid, list2[2], icon=QIcon(
668
             sqlitem.append(TreeWidgetItem(id, fid, list2[2], icon=QIcon(
627
                 "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"), extend=list2[2]))
669
                 "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"), extend=list2[2]))
670
+            zdy1 = []
671
+            zdy1.append(id)
672
+            zdy1.append(fid)
673
+            zdy1.append(list2[2])
674
+            zdy.append(zdy1)
675
+            id = id + 1
628
         #展示
676
         #展示
629
-
630
-
631
-
632
-
633
-
634
-
677
+        self.itemClicked: Signal = Signal(object)
678
+        self.itemDoubleClicked: Signal = Signal(object)
679
+        sqltree = ElTreeData(items=sqlitem)
680
+        self.data = sqltree
681
+        # 将按钮的点击信号绑定到当前类的点击信号
682
+        # 信号改为展示方法,这里同导出展示
683
+        self.ui.qureyTreeWidget.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
684
+        self.ui.qureyTreeWidget.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
685
+        self.__render_items1(True)
635
 
686
 
636
     #直接这个基础上改点选输出表格(未改)
687
     #直接这个基础上改点选输出表格(未改)
637
     def computeClick(self):
688
     def computeClick(self):

正在加载...
取消
保存