浏览代码

20241213 数据一览界面的listview变更为treewidget,上传GSExport和WDExport,main_new里有几个显示的方法,tree部分先不管,有问题

rmy 5 个月前
父节点
当前提交
6d76980bc8

二进制
Back/GC/__pycache__/GC.cpython-312.pyc 查看文件


二进制
Back/GC/__pycache__/GCcompute.cpython-312.pyc 查看文件


二进制
Back/GC/__pycache__/GCshow.cpython-312.pyc 查看文件


二进制
Back/GC/__pycache__/__init__.cpython-312.pyc 查看文件


+ 238
- 0
Back/GS/GSExport.py 查看文件

@@ -0,0 +1,238 @@
1
+import openpyxl
2
+import sqlite3
3
+import os
4
+from openpyxl.styles import Alignment
5
+
6
+def Arrange_Data1(list1):
7
+    #最终return的
8
+    list2 = []
9
+    for data1 in list1:
10
+        #点名
11
+        #存每一行的数据
12
+        resultlist = []
13
+        pn = data1[0].decode('utf-8')
14
+        resultlist.append(pn)
15
+        resultlist.append(data1[1])
16
+        resultlist.append(data1[2])
17
+        resultlist.append(data1[3])
18
+        resultlist.append(data1[4])
19
+        resultlist.append(data1[5])
20
+        #判定
21
+        an1 = data1[6].decode('utf-8')
22
+        resultlist.append(an1)
23
+        #两个结果名字(旧新)
24
+        name1 = data1[7].decode('utf-8')
25
+        resultlist.append(name1)
26
+        name2 = data1[8].decode('utf-8')
27
+        resultlist.append(name2)
28
+        list2.append(resultlist)
29
+    return list2
30
+
31
+#复测成果表
32
+def Arrange_Data2(list1):
33
+    #最终return的
34
+    list2 = []
35
+    for data1 in list1:
36
+        #点名
37
+        #存每一行的数据
38
+        resultlist = []
39
+        pn = data1[0].decode('utf-8')
40
+        resultlist.append(pn)
41
+        resultlist.append(data1[1])
42
+        resultlist.append(data1[2])
43
+        resultlist.append(data1[3])
44
+        resultlist.append(data1[4])
45
+        resultlist.append(data1[5])
46
+        resultlist.append(data1[6])
47
+        resultlist.append(data1[7])
48
+        #判定
49
+        an1 = data1[8].decode('utf-8')
50
+        resultlist.append(an1)
51
+        #两个结果名字(旧新)
52
+        name1 = data1[9].decode('utf-8')
53
+        resultlist.append(name1)
54
+        name2 = data1[10].decode('utf-8')
55
+        resultlist.append(name2)
56
+        list2.append(resultlist)
57
+    
58
+    return list2
59
+
60
+def openpyxl_write(outpath,dbpath,filename):
61
+    utf_en = filename.encode('utf-8')
62
+    #新建对应的excel
63
+    wb = openpyxl.Workbook()
64
+    ws2 = wb.create_sheet('复测成果表')
65
+    ws1 = wb.create_sheet('复测基准归算表')
66
+    ws3 = wb.create_sheet('基准归算模型')
67
+    ws5 = wb['Sheet']
68
+    wb.remove(ws5)
69
+
70
+    #w1部分(基准归算表)
71
+    #提取数据
72
+    db = sqlite3.connect(dbpath)
73
+    cursor1 = db.cursor()
74
+    sqlstr11 = 'select PointName,Cal_X,Cal_Y,Last_CalX,Last_CalY,Last_CalP,Dis_Ass,Last_ResultName,New_ResultName from GS_Result_Point WHERE TableName = ?'
75
+    cursor1.execute(sqlstr11,(utf_en,))
76
+    #获取结果集
77
+    result1 = cursor1.fetchall()
78
+    #整理数据
79
+    plist1 = Arrange_Data1(result1)
80
+    ws1.column_dimensions['A'].width = 5
81
+    ws1.column_dimensions['B'].width = 15
82
+    ws1.column_dimensions['C'].width = 15
83
+    ws1.column_dimensions['D'].width = 8
84
+    ws1.column_dimensions['E'].width = 8
85
+    ws1.column_dimensions['F'].width = 8
86
+    ws1.column_dimensions['G'].width = 5
87
+    ws1.merge_cells(start_row=1, end_row=1,
88
+                    start_column=1, end_column=7)
89
+    ws1.cell(1, 1).value = '复测基准归算与位移判定'
90
+    ws1.merge_cells(start_row=2, end_row=3,
91
+                    start_column=1, end_column=1)
92
+    ws1.cell(2, 1).value = '点名'
93
+    ws1.merge_cells(start_row=2, end_row=2,
94
+                    start_column=2, end_column=3)
95
+    ws1.cell(2, 2).value = plist1[0][8] + '基准归算成果'
96
+    ws1.merge_cells(start_row=2, end_row=2,
97
+                    start_column=4, end_column=6)
98
+    ws1.cell(2, 4).value = plist1[0][7] + '-归算成果(mm)'
99
+    ws_area = ws1["A1:H3"]
100
+    alignment_center = Alignment(horizontal='center', vertical='center')# 指定区域单元格居中
101
+    for i in ws_area:
102
+        for j in i:
103
+            j.alignment = alignment_center
104
+    alignment_right = Alignment(horizontal='right', vertical='center')
105
+    ws1.merge_cells(start_row=2, end_row=3,
106
+        start_column=7, end_column=7)
107
+    ws1.cell(2, 7).value = '位移判定'
108
+    ws1.cell(2, 7).alignment = Alignment(wrap_text=True)
109
+    ws1.cell(3, 2).value = 'X(mm)'
110
+    ws1.cell(3, 3).value = 'Y(mm)'
111
+    ws1.cell(3, 4).value = '△X'
112
+    ws1.cell(3, 5).value = '△Y'
113
+    ws1.cell(3, 6).value = '△P'
114
+    row1 = 4
115
+    for data1 in plist1:
116
+        ws1.cell(row1,1).value = data1[0]
117
+        ws1.cell(row1,2).value = round(data1[1],4)
118
+        ws1.cell(row1,3).value = round(data1[2],4)
119
+        ws1.cell(row1,4).value = round(data1[3],1)
120
+        ws1.cell(row1,5).value = round(data1[4],1)
121
+        ws1.cell(row1,6).value = round(data1[5],1)
122
+        if data1[6] == '稳定':
123
+            ws1.cell(row1,7).value = ''
124
+        else:
125
+            ws1.cell(row1,7).value = data1[6]
126
+        row1 = row1 + 1
127
+
128
+    #ws2部分(复测成果表)
129
+    #提取数据
130
+    sqlstr1 = 'select PointName,Last_X,Last_Y,Result_X,Result_Y,Last_ResultX,Last_ResultY,Last_ResultP,Dis_Ass,Last_ResultName,New_ResultName from GS_Result_Point WHERE TableName = ?'
131
+    cursor1.execute(sqlstr1,(utf_en,))
132
+    #获取结果集
133
+    result2 = cursor1.fetchall()
134
+    #整理数据
135
+    plist2 = Arrange_Data2(result2)
136
+    ws2.column_dimensions['A'].width = 5
137
+    ws2.column_dimensions['B'].width = 15
138
+    ws2.column_dimensions['C'].width = 15
139
+    ws2.column_dimensions['D'].width = 15
140
+    ws2.column_dimensions['E'].width = 15
141
+    ws2.column_dimensions['F'].width = 8
142
+    ws2.column_dimensions['G'].width = 8
143
+    ws2.column_dimensions['H'].width = 8
144
+    ws2.column_dimensions['I'].width = 5
145
+    ws2.merge_cells(start_row=1, end_row=1,
146
+                    start_column=1, end_column=3)
147
+    ws2.cell(1, 1).value = '前期成果'
148
+    ws2.merge_cells(start_row=1, end_row=1,
149
+                    start_column=4, end_column=9)
150
+    ws2.cell(1, 4).value = '本期成果'
151
+    ws_area = ws2["A1:I2"]
152
+    alignment_center = Alignment(horizontal='center', vertical='center')# 指定区域单元格居中
153
+    for i in ws_area:
154
+        for j in i:
155
+            j.alignment = alignment_center
156
+    alignment_right = Alignment(horizontal='right', vertical='center')
157
+    ws2.merge_cells(start_row=2, end_row=3,
158
+                    start_column=1, end_column=1)
159
+    ws2.cell(2, 1).value = '点名'
160
+    ws2.merge_cells(start_row=2, end_row=2,
161
+                    start_column=2, end_column=3)
162
+    ws2.cell(2, 2).value = plist2[0][9]
163
+    ws2.merge_cells(start_row=2, end_row=2,
164
+                    start_column=4, end_column=5)
165
+    ws2.cell(2, 4).value = plist2[0][10]
166
+    ws2.merge_cells(start_row=2, end_row=2,
167
+                    start_column=6, end_column=8)
168
+    newname_1 = plist2[0][9] + '-' + plist2[0][10] + '(mm)'
169
+    ws2.cell(2, 6).value = newname_1
170
+    ws2.merge_cells(start_row=2, end_row=3,
171
+                    start_column=9, end_column=9)
172
+    ws2.cell(2, 9).value = '位移判定'
173
+    ws2.cell(2, 9).alignment = Alignment(wrap_text=True)
174
+    ws2.cell(3, 2).value = 'X(m)'
175
+    ws2.cell(3, 3).value = 'Y(m)'
176
+    ws2.cell(3, 4).value = 'X(m)'
177
+    ws2.cell(3, 5).value = 'Y(m)'
178
+    ws2.cell(3, 6).value = '△X'
179
+    ws2.cell(3, 7).value = '△Y'
180
+    ws2.cell(3, 8).value = '△XY'
181
+    row2 = 4
182
+    for data2 in plist2:
183
+        ws2.cell(row2,1).value = data2[0]
184
+        ws2.cell(row2,2).value = round(data2[1],4)
185
+        ws2.cell(row2,3).value = round(data2[2],4)
186
+        ws2.cell(row2,4).value = round(data2[3],4)
187
+        ws2.cell(row2,5).value = round(data2[4],4)
188
+        ws2.cell(row2,6).value = round(data2[5],1)
189
+        ws2.cell(row2,7).value = round(data2[6],1)
190
+        ws2.cell(row2,8).value = round(data2[7],1)
191
+        if data2[8] == '稳定':
192
+            ws2.cell(row2,9).value = ''
193
+        else:
194
+            ws2.cell(row2,9).value = data2[8]
195
+        row2 = row2 + 1
196
+    
197
+    #ws3部分(公式)
198
+    #提取数据
199
+    sqlstr2 = 'select Last_ResultName,New_ResultName,Formula_X1,Formula_X2,Formula_X3,Formula_Y1,Formula_Y2,Formula_Y3 from GS_Trans_Param WHERE TableName = ?'
200
+    cursor1.execute(sqlstr2,(utf_en,))
201
+    #获取结果集
202
+    result3 = cursor1.fetchall() 
203
+    newname = result3[0][1].decode('utf-8')
204
+    lastname = result3[0][0].decode('utf-8')
205
+    ws3.column_dimensions['A'].width = 75
206
+    ws_area = ws3["A1:A5"]
207
+    alignment_center = Alignment(horizontal='left', vertical='center')# 指定区域单元格居中
208
+    for i in ws_area:
209
+        for j in i:
210
+            j.alignment = alignment_center
211
+    str1 = newname + '--' + lastname + '已知系统转换公式:'
212
+    ws3.cell(1, 1).value = str1
213
+    str2 = 'X=(' + str(round(result3[0][2],14)) + ')·x+(' + str(round(result3[0][3],14)) + ')·y+(' + str(round(result3[0][4],11)) + ')'
214
+    ws3.cell(2, 1).value = str2
215
+    str3 = 'Y=(' + str(round(result3[0][5],14)) + ')·x+(' + str(round(result3[0][6],14)) + ')·y+(' + str(round(result3[0][7],11)) + ')'
216
+    ws3.cell(3, 1).value = str3
217
+    str4 = '式中:x、y为' + newname
218
+    ws3.cell(4, 1).value = str4
219
+    str5 = '     X、Y为' + lastname + '已知系统的' + newname + '归算坐标'
220
+    ws3.cell(5, 1).value = str5
221
+    #保存
222
+    wb.save(outpath)
223
+    
224
+
225
+# 主函数 写入excel文件
226
+def main_function(outpath,dbpath,file_path):
227
+    dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
228
+    outpath = r'D:\4work_now\20240819GS\JPG\GS成果表.xlsx'
229
+    file_path = r'D:\4work_now\20240819GS\二滩_20240816.xls'
230
+    file_name = os.path.basename(file_path)
231
+    # outpath为包含输出excel名字的全路径
232
+    openpyxl_write(outpath,dbpath,file_name)
233
+# dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
234
+# outpath = r'D:\4work_now\20240819GS\JPG\GS成果表.xlsx'
235
+# file_path = r'D:\4work_now\20240819GS\二滩_20240816.xls'
236
+# file_name = os.path.basename(file_path)
237
+# # outpath为包含输出excel名字的全路径
238
+# openpyxl_write(outpath,dbpath,file_name)

二进制
Back/GS/__pycache__/GS.cpython-312.pyc 查看文件


二进制
Back/GS/__pycache__/GSshow.cpython-312.pyc 查看文件


二进制
Back/GS/__pycache__/__init__.cpython-312.pyc 查看文件


+ 201
- 0
Back/WD/WDExport.py 查看文件

@@ -0,0 +1,201 @@
1
+import openpyxl
2
+import sqlite3
3
+import os
4
+from openpyxl.styles import Alignment
5
+
6
+def Arrange_Data1(list1):
7
+    #最终return的
8
+    list2 = []
9
+    for data1 in list1:
10
+        #点名
11
+        #存每一行的数据
12
+        resultlist = []
13
+        pn = data1[0].decode('utf-8')
14
+        resultlist.append(pn)
15
+        resultlist.append(data1[1])
16
+        resultlist.append(data1[2])
17
+        resultlist.append(data1[3])
18
+        resultlist.append(data1[4])
19
+        resultlist.append(data1[5])
20
+        resultlist.append(data1[6])
21
+        resultlist.append(data1[7])
22
+        resultlist.append(data1[8])
23
+        resultlist.append(data1[9])
24
+        resultlist.append(data1[10])
25
+        resultlist.append(data1[11])
26
+        #判定1
27
+        an1 = data1[12].decode('utf-8')
28
+        resultlist.append(an1)
29
+        resultlist.append(data1[13])
30
+        resultlist.append(data1[14])
31
+        resultlist.append(data1[15])
32
+        #判定2
33
+        an2 = data1[16].decode('utf-8')
34
+        resultlist.append(an2)
35
+        #3个名字(首,上,新)
36
+        name1 = data1[17].decode('utf-8')
37
+        resultlist.append(name1)
38
+        name2 = data1[18].decode('utf-8')
39
+        resultlist.append(name2)
40
+        name3 = data1[19].decode('utf-8')
41
+        resultlist.append(name3)
42
+        list2.append(resultlist)
43
+    
44
+    return list2
45
+
46
+def openpyxl_write(outpath,dbpath,filename):
47
+    utf_en = filename.encode('utf-8')
48
+    #新建对应的excel
49
+    wb = openpyxl.Workbook()
50
+    ws1 = wb.create_sheet('稳定性分析成果表')
51
+    ws2 = wb.create_sheet('改算模型')
52
+    ws3 = wb['Sheet']
53
+    wb.remove(ws3)
54
+
55
+    #ws1部分(成果表)
56
+    #提取数据
57
+    db1 = sqlite3.connect(dbpath)
58
+    #获取游标
59
+    cursor1 = db1.cursor()
60
+    sqlstr1 = 'select PointName,First_X,First_Y,Last_X,Last_Y,Last_Wight,Result_X,Result_Y,New_Wight,New_FirstX,New_FirstY,New_FirstP,NFDis_Ass,New_LastX,New_LastY,New_LastP,NLDis_Ass,First_ResultName,Last_ResultName,New_ResultName from WD_Result_Point WHERE TableName = ?'
61
+    cursor1.execute(sqlstr1,(utf_en,))
62
+    #获取结果集
63
+    result1 = cursor1.fetchall()
64
+    #整理数据
65
+    plist1 = Arrange_Data1(result1)
66
+    ws1.column_dimensions['B'].width = 15
67
+    ws1.column_dimensions['C'].width = 15
68
+    ws1.column_dimensions['D'].width = 15
69
+    ws1.column_dimensions['E'].width = 15
70
+    ws1.column_dimensions['F'].width = 5
71
+    ws1.column_dimensions['G'].width = 15
72
+    ws1.column_dimensions['H'].width = 15
73
+    ws1.column_dimensions['I'].width = 5
74
+    ws1.column_dimensions['M'].width = 5
75
+    ws1.column_dimensions['Q'].width = 5
76
+    ws1.column_dimensions['J'].width = 8
77
+    ws1.column_dimensions['K'].width = 8
78
+    ws1.column_dimensions['L'].width = 8
79
+    ws1.column_dimensions['N'].width = 8
80
+    ws1.column_dimensions['O'].width = 8
81
+    ws1.column_dimensions['P'].width = 8
82
+    ws1.merge_cells(start_row=1, end_row=1,
83
+                    start_column=1, end_column=17)
84
+    ws1.cell(1, 1).value = '稳定性分析成果表'
85
+    ws_area = ws1["A1:Q2"]
86
+    alignment_center = Alignment(horizontal='center', vertical='center')# 指定区域单元格居中
87
+    for i in ws_area:
88
+        for j in i:
89
+            j.alignment = alignment_center
90
+    alignment_right = Alignment(horizontal='right', vertical='center')
91
+    ws1.merge_cells(start_row=2, end_row=3,
92
+                    start_column=1, end_column=1)
93
+    ws1.cell(2, 1).value = '点号'
94
+    ws1.merge_cells(start_row=2, end_row=2,
95
+                    start_column=2, end_column=3)
96
+    ws1.cell(2, 2).value = plist1[0][17]
97
+    ws1.merge_cells(start_row=2, end_row=2,
98
+                    start_column=4, end_column=6)
99
+    ws1.cell(2, 4).value = plist1[0][18]
100
+    ws1.merge_cells(start_row=2, end_row=2,
101
+                    start_column=7, end_column=9)
102
+
103
+    ws1.cell(2, 7).value = plist1[0][19]
104
+    ws1.merge_cells(start_row=2, end_row=2,
105
+                    start_column=10, end_column=12)
106
+    ws1.cell(2, 10).value = '本期-首期(mm)'
107
+    ws1.merge_cells(start_row=2, end_row=3,
108
+                    start_column=13, end_column=13)
109
+    ws1.cell(2, 13).value = '变形判定'
110
+    ws1.merge_cells(start_row=2, end_row=2,
111
+                    start_column=14, end_column=16)
112
+    ws1.cell(2, 14).value = '本期-上期(mm)'
113
+    ws1.merge_cells(start_row=2, end_row=3,
114
+                    start_column=17, end_column=17)
115
+    ws1.cell(2, 17).value = '变形判定'
116
+    ws1.cell(2, 13).alignment = Alignment(wrap_text=True)
117
+    ws1.cell(2, 17).alignment = Alignment(wrap_text=True)
118
+    ws1.cell(3, 2).value = 'X(m)'
119
+    ws1.cell(3, 3).value = 'Y(m)'
120
+    ws1.cell(3, 4).value = 'X(m)'
121
+    ws1.cell(3, 5).value = 'Y(m)'
122
+    ws1.cell(3, 6).value = '权'
123
+    ws1.cell(3, 7).value = 'X(m)'
124
+    ws1.cell(3, 8).value = 'Y(m)'
125
+    ws1.cell(3, 9).value = '权'
126
+    ws1.cell(3, 10).value = '△X'
127
+    ws1.cell(3, 11).value = '△Y'
128
+    ws1.cell(3, 12).value = '△XY'
129
+    ws1.cell(3, 14).value = '△X'
130
+    ws1.cell(3, 15).value = '△Y'
131
+    ws1.cell(3, 16).value = '△XY'
132
+
133
+    row1 = 4
134
+    for data1 in plist1:
135
+        ws1.cell(row1,1).value = data1[0]
136
+        ws1.cell(row1,2).value = round(data1[1],4)
137
+        ws1.cell(row1,3).value = round(data1[2],4)
138
+        ws1.cell(row1,4).value = round(data1[3],4)
139
+        ws1.cell(row1,5).value = round(data1[4],4)
140
+        ws1.cell(row1,6).value = int(data1[5])
141
+        ws1.cell(row1,7).value = round(data1[6],4)
142
+        ws1.cell(row1,8).value = round(data1[7],4)
143
+        ws1.cell(row1,9).value = int(data1[8])
144
+        ws1.cell(row1,10).value = round(data1[9],1)
145
+        ws1.cell(row1,11).value = round(data1[10],1)
146
+        ws1.cell(row1,12).value = round(data1[11],1)
147
+        if data1[12] == '稳定':
148
+            ws1.cell(row1,13).value = ''
149
+        else:
150
+            ws1.cell(row1,13).value = data1[12]
151
+        ws1.cell(row1,14).value = round(data1[13],1)
152
+        ws1.cell(row1,15).value = round(data1[14],1)
153
+        ws1.cell(row1,16).value = round(data1[15],1)
154
+        if data1[16] == '稳定':
155
+            ws1.cell(row1,17).value = ''
156
+        else:
157
+            ws1.cell(row1,17).value = data1[16]
158
+        row1 = row1 + 1
159
+
160
+    #ws2部分(公式)
161
+    #提取数据
162
+    sqlstr2 = 'select Last_ResultName,New_ResultName,Formula_X1,Formula_X2,Formula_X3,Formula_Y1,Formula_Y2,Formula_Y3 from WD_Result_Param WHERE TableName = ?'
163
+    cursor1.execute(sqlstr2,(utf_en,))
164
+    #获取结果集
165
+    result3 = cursor1.fetchall() 
166
+    newname = result3[0][1].decode('utf-8')
167
+    lastname = result3[0][0].decode('utf-8')
168
+    ws2.column_dimensions['A'].width = 75
169
+    ws_area = ws2["A1:A5"]
170
+    alignment_center = Alignment(horizontal='left', vertical='center')# 指定区域单元格居中
171
+    for i in ws_area:
172
+        for j in i:
173
+            j.alignment = alignment_center
174
+    str1 = newname + '--' + lastname + '已知系统转换公式:'
175
+    ws2.cell(1, 1).value = str1
176
+    str2 = 'X=(' + str(round(result3[0][2],14)) + ')·x+(' + str(round(result3[0][3],14)) + ')·y+(' + str(round(result3[0][4],11)) + ')'
177
+    ws2.cell(2, 1).value = str2
178
+    str3 = 'Y=(' + str(round(result3[0][5],14)) + ')·x+(' + str(round(result3[0][6],14)) + ')·y+(' + str(round(result3[0][7],11)) + ')'
179
+    ws2.cell(3, 1).value = str3
180
+    str4 = '式中:x、y为' + newname
181
+    ws2.cell(4, 1).value = str4
182
+    str5 = '     X、Y为' + lastname + '已知系统的' + newname + '归算坐标'
183
+    ws2.cell(5, 1).value = str5
184
+    #保存
185
+    wb.save(outpath)
186
+
187
+
188
+# # 主函数 写入excel文件
189
+# def main_function(outpath,dbpath,file_path):
190
+#     dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
191
+#     outpath = r'D:\4work_now\20240819GS\JPG\WD成果表.xlsx'
192
+#     file_path = r'D:\4work_now\20240819GS\test_wd.xls'
193
+#     file_name = os.path.basename(file_path)
194
+#     # outpath为包含输出excel名字的全路径
195
+#     openpyxl_write(outpath,dbpath,file_name)
196
+dbpath = r"D:\4work_now\20240819GS\ControlNetwork\ControlNetwork\UI\SQL\DataBase.db"
197
+outpath = r'D:\4work_now\20240819GS\JPG\WD成果表.xlsx'
198
+file_path = r'D:\4work_now\20240819GS\test_wd.xls'
199
+file_name = os.path.basename(file_path)
200
+# outpath为包含输出excel名字的全路径
201
+openpyxl_write(outpath,dbpath,file_name)

二进制
Back/WD/__pycache__/WD.cpython-312.pyc 查看文件


二进制
Back/WD/__pycache__/WDshow.cpython-312.pyc 查看文件


二进制
Back/WD/__pycache__/__init__.cpython-312.pyc 查看文件


二进制
Back/__pycache__/__init__.cpython-312.pyc 查看文件


+ 147
- 4
Front/main_new.py 查看文件

@@ -13,10 +13,11 @@
13 13
 # https://doc.qt.io/qtforpython/licenses.html
14 14
 #
15 15
 # ///////////////////////////////////////////////////////////////
16
-from PySide6.QtWidgets import QFileDialog
17
-from PySide6.QtCore import Signal, Slot
16
+from PySide6.QtWidgets import QFileDialog,QWidget, QVBoxLayout, QTreeWidget, QApplication, QTreeWidgetItem
17
+from PySide6.QtCore import Signal, Slot,Qt,QObject
18 18
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
19 19
 import sqlite3
20
+from PySide6.QtGui import QIcon
20 21
 
21 22
 
22 23
 import sys
@@ -65,6 +66,67 @@ class MyTableModel(QAbstractTableModel):
65 66
             return self._data[index.row()][index.column()]
66 67
         return None
67 68
 
69
+class TreeWidgetItem:
70
+    def __init__(self, id: any, parent_id: any, name: str, icon: QIcon = None, extend: object = None):
71
+        """
72
+        菜单数据接口
73
+        :param id: ID
74
+        :param parent_id: 父ID
75
+        :param name: 菜单名称
76
+        :param icon: 图标
77
+        :param extend: 扩展数据
78
+        """
79
+        self.id: any = id
80
+        self.parent_id: any = parent_id
81
+        self.name: str = name
82
+        self.extend: object = extend
83
+        # 实例化
84
+        self.treeWidgetItem = QTreeWidgetItem([self.name])
85
+        # 存储相关数据
86
+        self.treeWidgetItem.setData(0, Qt.UserRole + 1, extend)
87
+        self.treeWidgetItem.setIcon(0, QIcon(':/icons/default.png'))
88
+        if icon is not None:
89
+            self.treeWidgetItem.setIcon(0, icon)
90
+
91
+class ElTreeData(QObject):
92
+    """
93
+    Data Model
94
+    """
95
+    items_changed: Signal = Signal(str)
96
+    styleSheet_changed: Signal = Signal(str)
97
+    itemClicked: Signal = Signal(object)
98
+    itemDoubleClicked: Signal = Signal(object)
99
+ 
100
+    def __init__(self, items: list[TreeWidgetItem] = None, styleSheet: str = None):
101
+        super(ElTreeData, self).__init__()
102
+        # 定义数据
103
+        self._items: list[TreeWidgetItem]
104
+        self._styleSheet: str
105
+        # 初始化数据
106
+        self.items = items
107
+        self.styleSheet = styleSheet
108
+ 
109
+    @property
110
+    def items(self):
111
+        return self._items
112
+ 
113
+    @items.setter
114
+    def items(self, value):
115
+        self._items = value
116
+        # 数据改变时发出信号
117
+        self.items_changed.emit(self.items)
118
+ 
119
+    @property
120
+    def styleSheet(self):
121
+        return self._styleSheet
122
+ 
123
+    @styleSheet.setter
124
+    def styleSheet(self, value):
125
+        self._styleSheet = value
126
+        # 数据改变时发出信号
127
+        self.styleSheet_changed.emit(self.styleSheet)
128
+
129
+
68 130
 class MainWindow(QMainWindow):
69 131
     def __init__(self):
70 132
         QMainWindow.__init__(self)
@@ -113,7 +175,7 @@ class MainWindow(QMainWindow):
113 175
         # 成果预览
114 176
         widgets.btn_new.clicked.connect(self.buttonClick)
115 177
         # 数据一览
116
-        widgets.btn_data.clicked.connect(self.buttonClick)
178
+        
117 179
         # 皮肤切换
118 180
         widgets.btn_message.clicked.connect(self.buttonClick)
119 181
         # 打开上传文件夹
@@ -145,7 +207,8 @@ class MainWindow(QMainWindow):
145 207
         useCustomTheme = True
146 208
         self.useCustomTheme = useCustomTheme
147 209
         self.absPath = absPath
148
-        themeFile = r"Front\themes\py_dracula_light.qss"
210
+        # themeFile = r"Front\themes\py_dracula_light.qss"
211
+        themeFile = r"D:\4work_now\20240819GS\20241211\Front\themes\py_dracula_light.qss"
149 212
 
150 213
         # 设置主题和HACKS
151 214
         if useCustomTheme:
@@ -159,12 +222,43 @@ class MainWindow(QMainWindow):
159 222
         # ///////////////////////////////////////////////////////////////
160 223
         widgets.stackedWidget.setCurrentWidget(widgets.home)
161 224
         widgets.btn_home.setStyleSheet(UIFunctions.selectMenu(widgets.btn_home.styleSheet()))
225
+
162 226
         self.bind()
163 227
 
228
+        #treewidget
229
+        self.data = ElTreeData
230
+        widgets.allTreeWidget.itemClicked.connect(lambda item: self.itemClicked.emit(item.data(0, Qt.UserRole + 1)))
231
+        widgets.allTreeWidget.itemDoubleClicked.connect(lambda item: self.itemDoubleClicked.emit(item.data(0, Qt.UserRole + 1)))
232
+        # self.__render_items(True)
233
+
234
+    def __render_items(self, is_clear: bool):
235
+        if is_clear:
236
+            widgets.allTreeWidget.clear()
237
+        widgets.allTreeWidget.setColumnCount(1)
238
+        widgets.allTreeWidget.setHeaderHidden(True)
239
+        if self.data.items is not None:
240
+            # 转为字典
241
+            mapping: dict[any, TreeWidgetItem] = dict(zip([i.id for i in self.data.items], self.data.items))
242
+            # 树容器
243
+            treeWidgetItems: list[QTreeWidgetItem] = []
244
+            for d in self.data.items:
245
+                # 如果找不到父级项,则是根节点
246
+                parent: TreeWidgetItem = mapping.get(d.parent_id)
247
+                if parent is None:
248
+                    treeWidgetItems.append(d.treeWidgetItem)
249
+                else:
250
+                    parent.treeWidgetItem.addChild(d.treeWidgetItem)
251
+
252
+            # 挂载到树上
253
+            widgets.allTreeWidget.insertTopLevelItems(0, treeWidgetItems)
254
+
255
+
164 256
     #绑定组件
165 257
     def bind(self):
166 258
         # 计算
167 259
         widgets.compute.clicked.connect(self.computeClick)
260
+        #数据库展示(初始化)
261
+        widgets.btn_data.clicked.connect(self.dataClick)
168 262
 
169 263
     #删除tableview
170 264
     def delete_table_view(table_view):
@@ -414,6 +508,55 @@ class MainWindow(QMainWindow):
414 508
             xx = xx + 1 
415 509
         return model
416 510
 
511
+    
512
+
513
+    def dataClick(self):
514
+        # GET BUTTON CLICKED
515
+        btn = self.sender()
516
+        btnName = btn.objectName()
517
+        #初始化全部数据库
518
+        inpath = r'D:\4work_now\20240819GS\20241211\SQL'
519
+        #读取所有的数据库名
520
+        list1 = []
521
+        for filename in os.listdir(inpath):
522
+            dbname = filename.split('.',-1)[0]
523
+            dbpath = os.path.join(inpath,filename)
524
+            lista = []
525
+            lista.append(dbname)
526
+            lista.append(dbpath)
527
+            list1.append(lista)
528
+            #读取所有的表名(三种方式往下)
529
+            db1 = sqlite3.connect(dbpath)
530
+            #获取游标
531
+            cursor1 = db1.cursor()
532
+            sqlstr1 = 'SELECT TableName FROM GC_Input_Param;'
533
+            cursor1.execute(sqlstr1)
534
+            result1 = cursor1.fetchall()
535
+            sqlstr2 = 'SELECT TableName FROM GS_Input_Param;'
536
+            cursor1.execute(sqlstr2)
537
+            result2 = cursor1.fetchall()
538
+            sqlstr3 = 'SELECT TableName FROM WD_Input_Param;'
539
+            cursor1.execute(sqlstr3)
540
+            result3 = cursor1.fetchall()
541
+        atw_button = ElTreeData(items=[
542
+        TreeWidgetItem(1, 0, "User", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 1}),
543
+        TreeWidgetItem(2, 1, "Child", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 2}),
544
+        TreeWidgetItem(3, 1, "Child", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 3}),
545
+        TreeWidgetItem(4, 2, "Child", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 4}),
546
+        TreeWidgetItem(5, 2, "Child", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 5}),
547
+        TreeWidgetItem(6, 5, "Child", icon=QIcon("D:/4work_now/20240819GS/20241211/Front/images/icons/cil_file.png"), extend={'id': 6}),
548
+        TreeWidgetItem(7, 5, "Child", extend={'id': 7}),
549
+        TreeWidgetItem(8, 5, "Child", extend={'id': 8}),
550
+        TreeWidgetItem(9, 8, "Child", extend={'id': 9}),
551
+        ])
552
+    
553
+        # atw_button.itemClicked.connect(lambda extend: print("单击->扩展数据为:", extend))
554
+        # atw_button.itemDoubleClicked.connect(lambda extend: print("双击->扩展数据为:", extend))
555
+        # atw_button.show()
556
+        widgets.stackedWidget.setCurrentWidget(widgets.datainfo)
557
+        UIFunctions.resetStyle(self, btnName)  # RESET ANOTHERS BUTTONS SELECTED
558
+        btn.setStyleSheet(UIFunctions.selectMenu(btn.styleSheet()))
559
+
417 560
     def computeClick(self):
418 561
         # GET BUTTON CLICKED
419 562
         btn = self.sender()

+ 12
- 8
Front/modules/ui_main.py 查看文件

@@ -8,6 +8,9 @@
8 8
 ## WARNING! All changes made in this file will be lost when recompiling UI file!
9 9
 ################################################################################
10 10
 
11
+import sys
12
+sys.path.append("../..")
13
+
11 14
 import sqlite3
12 15
 import os
13 16
 from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
@@ -21,7 +24,7 @@ from PySide6.QtWidgets import (QApplication, QCheckBox, QComboBox, QFormLayout,
21 24
                                QFrame, QGridLayout, QHBoxLayout, QHeaderView,
22 25
                                QLabel, QLineEdit, QListView, QMainWindow,
23 26
                                QPushButton, QSizePolicy, QStackedWidget, QTabWidget,
24
-                               QTableView, QTextEdit, QVBoxLayout, QWidget, QMessageBox)
27
+                               QTableView, QTextEdit, QVBoxLayout, QWidget, QMessageBox,QTreeWidget)
25 28
 from Back.Program_Run.data_show import Arrange_Data, Arrange_Data1, Arrange_Data2, Data_in_Cell, Data_in_Cell1, Data_in_Cell2
26 29
 from Back.Program_Run.database_operations import create_database_and_tables
27 30
 from Back.Program_Run.file_system_watching import ComboBoxUpdater
@@ -30,6 +33,7 @@ from watchdog.observers import Observer
30 33
 from .resources_rc import *
31 34
 
32 35
 
36
+
33 37
 # class ComboBoxUpdater(FileSystemEventHandler):
34 38
 #     def __init__(self, comboBox, sql_folder):
35 39
 #         super().__init__()
@@ -1384,7 +1388,7 @@ class Ui_MainWindow(object):
1384 1388
         self.createFile.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
1385 1389
         self.createFile.setStyleSheet(u"background-color: rgb(52, 59, 72);")
1386 1390
         # 将 createFile 按钮的点击事件与 自身的create_database_and_tables 函数关联,用于创建数据库
1387
-        self.createFile.clicked.connect(create_database_and_tables)
1391
+        # self.createFile.clicked.connect(create_database_and_tables)
1388 1392
         icon4 = QIcon()
1389 1393
         icon4.addFile(u":/icons/images/icons/cil-folder-open.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
1390 1394
         self.createFile.setIcon(icon4)
@@ -1658,10 +1662,10 @@ class Ui_MainWindow(object):
1658 1662
 
1659 1663
         self.verticalLayout_24.addWidget(self.comboBox_3)
1660 1664
 
1661
-        self.qureyListView = QListView(self.datainfo)
1662
-        self.qureyListView.setObjectName(u"qureyListView")
1665
+        self.qureyTreeWidget = QTreeWidget(self.datainfo)
1666
+        self.qureyTreeWidget.setObjectName(u"qureyTreeWidget")
1663 1667
 
1664
-        self.verticalLayout_24.addWidget(self.qureyListView)
1668
+        self.verticalLayout_24.addWidget(self.qureyTreeWidget)
1665 1669
 
1666 1670
         self.comboBox_4 = QComboBox(self.datainfo)
1667 1671
         self.comboBox_4.setObjectName(u"comboBox_4")
@@ -1675,10 +1679,10 @@ class Ui_MainWindow(object):
1675 1679
 
1676 1680
         self.verticalLayout_24.addWidget(self.comboBox_4)
1677 1681
 
1678
-        self.allListView = QListView(self.datainfo)
1679
-        self.allListView.setObjectName(u"allListView")
1682
+        self.allTreeWidget = QTreeWidget(self.datainfo)
1683
+        self.allTreeWidget.setObjectName(u"allTreeWidget")
1680 1684
 
1681
-        self.verticalLayout_24.addWidget(self.allListView)
1685
+        self.verticalLayout_24.addWidget(self.allTreeWidget)
1682 1686
 
1683 1687
         self.formLayout_3.setLayout(0, QFormLayout.LabelRole, self.verticalLayout_24)
1684 1688
 

正在加载...
取消
保存