Sfoglia il codice sorgente

20241218 main_new.py 能识别点击数据的扩展数据

rmy 5 mesi fa
parent
commit
cbaeb79fba
1 ha cambiato i file con 95 aggiunte e 84 eliminazioni
  1. 95
    84
      Front/main_new.py

+ 95
- 84
Front/main_new.py Vedi File

@@ -13,6 +13,7 @@
13 13
 # https://doc.qt.io/qtforpython/licenses.html
14 14
 #
15 15
 # ///////////////////////////////////////////////////////////////
16
+
16 17
 from PySide6.QtWidgets import QFileDialog,QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
17 18
 from PySide6.QtCore import Signal,  Qt, Slot, QObject
18 19
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
@@ -124,6 +125,83 @@ class ElTreeData(QObject):
124 125
         # 数据改变时发出信号
125 126
         self.styleSheet_changed.emit(self.styleSheet)
126 127
 
128
+#全数据库
129
+class ElTree(QWidget):
130
+    """
131
+    Control
132
+    """
133
+    itemClicked: Signal = Signal(object)
134
+    itemDoubleClicked: Signal = Signal(object)
135
+
136
+    def __init__(self, treeData: ElTreeData, parent=None):
137
+        super(ElTree, self).__init__(parent=parent)
138
+
139
+        self.data = treeData
140
+        # 将按钮的点击信号绑定到当前类的点击信号
141
+        widgets.allTreeWidget.itemClicked.connect(lambda item: self.itemClicked.emit(item.data(0, Qt.UserRole + 1)))
142
+        widgets.allTreeWidget.itemDoubleClicked.connect(lambda item: self.itemDoubleClicked.emit(item.data(0, Qt.UserRole + 1)))
143
+        self.__render_items(True)
144
+
145
+    def __render_items(self, is_clear: bool):
146
+        if is_clear:
147
+            widgets.allTreeWidget.clear()
148
+            widgets.qureyTreeWidget.clear()
149
+        widgets.allTreeWidget.setColumnCount(1)
150
+        widgets.allTreeWidget.setHeaderHidden(True)
151
+        widgets.qureyTreeWidget.setColumnCount(1)
152
+        widgets.qureyTreeWidget.setHeaderHidden(True)
153
+        if self.data.items is not None:
154
+            # 转为字典
155
+            mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
156
+            # 树容器
157
+            treeWidgetItems: list[QTreeWidgetItem] = []
158
+            for d in self.data.items:
159
+                # 如果找不到父级项,则是根节点
160
+                parent: TreeWidgetItem = mapping.get(d.parent_id)
161
+                if parent is None:
162
+                    treeWidgetItems.append(d.treeWidgetItem)
163
+                else:
164
+                    parent.treeWidgetItem.addChild(d.treeWidgetItem)
165
+
166
+            # 挂载到树上
167
+            widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
168
+
169
+#查询
170
+class ElTree1(QWidget):
171
+    """
172
+    Control
173
+    """
174
+    itemClicked: Signal = Signal(object)
175
+    itemDoubleClicked: Signal = Signal(object)
176
+
177
+    def __init__(self, treeData: ElTreeData, parent=None):
178
+        super(ElTree1, self).__init__(parent=parent)
179
+        self.data = treeData
180
+        # 将按钮的点击信号绑定到当前类的点击信号
181
+        widgets.qureyTreeWidget.itemClicked.connect(lambda item: self.itemClicked.emit(item.data(0, Qt.UserRole + 1)))
182
+        widgets.qureyTreeWidget.itemDoubleClicked.connect(lambda item: self.itemDoubleClicked.emit(item.data(0, Qt.UserRole + 1)))
183
+        self.__render_items(True)
184
+
185
+    def __render_items(self, is_clear: bool):
186
+        if is_clear:
187
+            widgets.qureyTreeWidget.clear()
188
+        widgets.qureyTreeWidget.setColumnCount(1)
189
+        widgets.qureyTreeWidget.setHeaderHidden(True)
190
+        if self.data.items is not None:
191
+            # 转为字典
192
+            mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
193
+            # 树容器
194
+            treeWidgetItems: list[QTreeWidgetItem] = []
195
+            for d in self.data.items:
196
+                # 如果找不到父级项,则是根节点
197
+                parent: TreeWidgetItem = mapping.get(d.parent_id)
198
+                if parent is None:
199
+                    treeWidgetItems.append(d.treeWidgetItem)
200
+                else:
201
+                    parent.treeWidgetItem.addChild(d.treeWidgetItem)
202
+
203
+            # 挂载到树上
204
+            widgets.qureyTreeWidget.insertTopLevelItems(0, treeWidgetItems)
127 205
 
128 206
 class MainWindow(QMainWindow):
129 207
     def __init__(self):
@@ -224,81 +302,19 @@ class MainWindow(QMainWindow):
224 302
         widgets.stackedWidget.setCurrentWidget(widgets.home)
225 303
         widgets.btn_home.setStyleSheet(UIFunctions.selectMenu(widgets.btn_home.styleSheet()))
226 304
 
227
-        #初始化树状组件
228
-        #///////////////////////////////////////////////////////////////
229
-        self.itemClicked: Signal = Signal(object)
230
-        self.itemDoubleClicked: Signal = Signal(object)
231
-        sqll = self.sql_init()
232
-        sqltree = ElTreeData(items=sqll)
233
-        self.data = sqltree
234
-        # 将按钮的点击信号绑定到当前类的点击信号
235
-        # 信号改为展示方法,这里同导出展示
236
-        # widgets.allTreeWidget.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
237
-        widgets.allTreeWidget.itemClicked.connect(self.test_method)
238
-        widgets.allTreeWidget.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
239
-        self.__render_items(True)
305
+        #初始化树状数据库
306
+        tree_button = self.sql_init()
307
+        tree_button.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
308
+        tree_button.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
240 309
 
241 310
         self.bind()
242 311
 
243
-    def test_method(self):
244
-        print('ok')
245
-
246 312
     #绑定组件
247 313
     def bind(self):
248 314
         # 计算
249 315
         widgets.compute.clicked.connect(self.computeClick)
250 316
         widgets.search.clicked.connect(self.searchClick)
251 317
 
252
-    #全部
253
-    def __render_items(self, is_clear: bool):
254
-        if is_clear:
255
-            widgets.allTreeWidget.clear()
256
-            widgets.qureyTreeWidget.clear()
257
-        widgets.allTreeWidget.setColumnCount(1)
258
-        widgets.allTreeWidget.setHeaderHidden(True)
259
-        widgets.qureyTreeWidget.setColumnCount(1)
260
-        widgets.qureyTreeWidget.setHeaderHidden(True)
261
-        if self.data.items is not None:
262
-            # 转为字典
263
-            mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
264
-            # 树容器
265
-            treeWidgetItems: list[QTreeWidgetItem] = []
266
-            for d in self.data.items:
267
-                # 如果找不到父级项,则是根节点
268
-                parent: TreeWidgetItem = mapping.get(d.parent_id)
269
-                if parent is None:
270
-                    treeWidgetItems.append(d.treeWidgetItem)
271
-                else:
272
-                    parent.treeWidgetItem.addChild(d.treeWidgetItem)
273
-
274
-            # 挂载到树上
275
-            widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
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
-
300
-
301
-
302 318
     #删除tableview
303 319
     def delete_table_view(table_view):
304 320
         table_view.setParent(None)
@@ -582,38 +598,40 @@ class MainWindow(QMainWindow):
582 598
             result1 = cursor1.fetchall()
583 599
             for re1 in result1:
584 600
                 str1 = re1[0].decode('utf-8')
585
-                sqlitem.append(TreeWidgetItem(id, gcid, str1, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
586 601
                 list1 = []
587
-                list1.append(dbname)
602
+                list1.append(dbpath)
588 603
                 list1.append('水准测段高差稳定计算')
589 604
                 list1.append(str1)
590 605
                 self.dblist.append(list1)
606
+                sqlitem.append(TreeWidgetItem(id, gcid, str1, icon=QIcon(
607
+                    "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend={'listData': list1}))
591 608
                 id = id + 1
592 609
             sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
593 610
             cursor1.execute(sqlstr2)
594 611
             result2 = cursor1.fetchall()
595 612
             for re2 in result2:
596 613
                 str2 = re2[0].decode('utf-8')
597
-                sqlitem.append(TreeWidgetItem(id, gsid, str2, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
598 614
                 list2 = []
599
-                list2.append(dbname)
615
+                list2.append(dbpath)
600 616
                 list2.append('控制网复测平面基准计算')
601 617
                 list2.append(str2)
602 618
                 self.dblist.append(list2)
619
+                sqlitem.append(TreeWidgetItem(id, gsid, str2, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend={'listData': list2}))
603 620
                 id = id + 1
604 621
             sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
605 622
             cursor1.execute(sqlstr3)
606 623
             result3 = cursor1.fetchall()
607 624
             for re3 in result3:
608 625
                 str3 = re3[0].decode('utf-8')
609
-                sqlitem.append(TreeWidgetItem(id, wdid, str3, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png")))
610 626
                 list3 = []
611
-                list3.append(dbname)
627
+                list3.append(dbpath)
612 628
                 list3.append('平面控制网稳定性计算')
613 629
                 list3.append(str3)
614 630
                 self.dblist.append(list3)
631
+                sqlitem.append(TreeWidgetItem(id, wdid, str3, icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"),extend={'listData': list3}))
615 632
                 id = id + 1
616
-        return sqlitem
633
+        button = ElTree(ElTreeData(sqlitem))
634
+        return button
617 635
 
618 636
     #关键词查询
619 637
     def searchClick(self):
@@ -666,23 +684,16 @@ class MainWindow(QMainWindow):
666 684
             zdy.append(zdy1)
667 685
             id = id + 1
668 686
             sqlitem.append(TreeWidgetItem(id, fid, list2[2], icon=QIcon(
669
-                "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"), extend=list2[2]))
687
+                "D:/4work_now/20240819GS/20241211/Front/images/icons/cil-file.png"), extend={'listData': list2}))
670 688
             zdy1 = []
671 689
             zdy1.append(id)
672 690
             zdy1.append(fid)
673 691
             zdy1.append(list2[2])
674 692
             zdy.append(zdy1)
675 693
             id = id + 1
676
-        #展示
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)
694
+        search_button = ElTree1(ElTreeData(sqlitem))
695
+        search_button.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
696
+        search_button.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
686 697
 
687 698
     #直接这个基础上改点选输出表格(未改)
688 699
     def computeClick(self):

Loading…
Annulla
Salva