Browse Source

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

rmy 5 months ago
parent
commit
cbaeb79fba
1 changed files with 95 additions and 84 deletions
  1. 95
    84
      Front/main_new.py

+ 95
- 84
Front/main_new.py View File

13
 # https://doc.qt.io/qtforpython/licenses.html
13
 # https://doc.qt.io/qtforpython/licenses.html
14
 #
14
 #
15
 # ///////////////////////////////////////////////////////////////
15
 # ///////////////////////////////////////////////////////////////
16
+
16
 from PySide6.QtWidgets import QFileDialog,QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
17
 from PySide6.QtWidgets import QFileDialog,QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
17
 from PySide6.QtCore import Signal,  Qt, Slot, QObject
18
 from PySide6.QtCore import Signal,  Qt, Slot, QObject
18
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
19
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
124
         # 数据改变时发出信号
125
         # 数据改变时发出信号
125
         self.styleSheet_changed.emit(self.styleSheet)
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
 class MainWindow(QMainWindow):
206
 class MainWindow(QMainWindow):
129
     def __init__(self):
207
     def __init__(self):
224
         widgets.stackedWidget.setCurrentWidget(widgets.home)
302
         widgets.stackedWidget.setCurrentWidget(widgets.home)
225
         widgets.btn_home.setStyleSheet(UIFunctions.selectMenu(widgets.btn_home.styleSheet()))
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
         self.bind()
310
         self.bind()
242
 
311
 
243
-    def test_method(self):
244
-        print('ok')
245
-
246
     #绑定组件
312
     #绑定组件
247
     def bind(self):
313
     def bind(self):
248
         # 计算
314
         # 计算
249
         widgets.compute.clicked.connect(self.computeClick)
315
         widgets.compute.clicked.connect(self.computeClick)
250
         widgets.search.clicked.connect(self.searchClick)
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
     #删除tableview
318
     #删除tableview
303
     def delete_table_view(table_view):
319
     def delete_table_view(table_view):
304
         table_view.setParent(None)
320
         table_view.setParent(None)
582
             result1 = cursor1.fetchall()
598
             result1 = cursor1.fetchall()
583
             for re1 in result1:
599
             for re1 in result1:
584
                 str1 = re1[0].decode('utf-8')
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
                 list1 = []
601
                 list1 = []
587
-                list1.append(dbname)
602
+                list1.append(dbpath)
588
                 list1.append('水准测段高差稳定计算')
603
                 list1.append('水准测段高差稳定计算')
589
                 list1.append(str1)
604
                 list1.append(str1)
590
                 self.dblist.append(list1)
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
                 id = id + 1
608
                 id = id + 1
592
             sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
609
             sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
593
             cursor1.execute(sqlstr2)
610
             cursor1.execute(sqlstr2)
594
             result2 = cursor1.fetchall()
611
             result2 = cursor1.fetchall()
595
             for re2 in result2:
612
             for re2 in result2:
596
                 str2 = re2[0].decode('utf-8')
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
                 list2 = []
614
                 list2 = []
599
-                list2.append(dbname)
615
+                list2.append(dbpath)
600
                 list2.append('控制网复测平面基准计算')
616
                 list2.append('控制网复测平面基准计算')
601
                 list2.append(str2)
617
                 list2.append(str2)
602
                 self.dblist.append(list2)
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
                 id = id + 1
620
                 id = id + 1
604
             sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
621
             sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
605
             cursor1.execute(sqlstr3)
622
             cursor1.execute(sqlstr3)
606
             result3 = cursor1.fetchall()
623
             result3 = cursor1.fetchall()
607
             for re3 in result3:
624
             for re3 in result3:
608
                 str3 = re3[0].decode('utf-8')
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
                 list3 = []
626
                 list3 = []
611
-                list3.append(dbname)
627
+                list3.append(dbpath)
612
                 list3.append('平面控制网稳定性计算')
628
                 list3.append('平面控制网稳定性计算')
613
                 list3.append(str3)
629
                 list3.append(str3)
614
                 self.dblist.append(list3)
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
                 id = id + 1
632
                 id = id + 1
616
-        return sqlitem
633
+        button = ElTree(ElTreeData(sqlitem))
634
+        return button
617
 
635
 
618
     #关键词查询
636
     #关键词查询
619
     def searchClick(self):
637
     def searchClick(self):
666
             zdy.append(zdy1)
684
             zdy.append(zdy1)
667
             id = id + 1
685
             id = id + 1
668
             sqlitem.append(TreeWidgetItem(id, fid, list2[2], icon=QIcon(
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
             zdy1 = []
688
             zdy1 = []
671
             zdy1.append(id)
689
             zdy1.append(id)
672
             zdy1.append(fid)
690
             zdy1.append(fid)
673
             zdy1.append(list2[2])
691
             zdy1.append(list2[2])
674
             zdy.append(zdy1)
692
             zdy.append(zdy1)
675
             id = id + 1
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
     def computeClick(self):
699
     def computeClick(self):

Loading…
Cancel
Save