Sfoglia il codice sorgente

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

rmy 5 mesi fa
parent
commit
6d76980bc8

BIN
Back/GC/__pycache__/GC.cpython-312.pyc Vedi File


BIN
Back/GC/__pycache__/GCcompute.cpython-312.pyc Vedi File


BIN
Back/GC/__pycache__/GCshow.cpython-312.pyc Vedi File


BIN
Back/GC/__pycache__/__init__.cpython-312.pyc Vedi File


+ 238
- 0
Back/GS/GSExport.py Vedi File

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)

BIN
Back/GS/__pycache__/GS.cpython-312.pyc Vedi File


BIN
Back/GS/__pycache__/GSshow.cpython-312.pyc Vedi File


BIN
Back/GS/__pycache__/__init__.cpython-312.pyc Vedi File


+ 201
- 0
Back/WD/WDExport.py Vedi File

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)

BIN
Back/WD/__pycache__/WD.cpython-312.pyc Vedi File


BIN
Back/WD/__pycache__/WDshow.cpython-312.pyc Vedi File


BIN
Back/WD/__pycache__/__init__.cpython-312.pyc Vedi File


BIN
Back/__pycache__/__init__.cpython-312.pyc Vedi File


+ 147
- 4
Front/main_new.py Vedi File

13
 # https://doc.qt.io/qtforpython/licenses.html
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
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
18
 from PySide6.QtSql import QSqlTableModel,QSqlDatabase
19
 import sqlite3
19
 import sqlite3
20
+from PySide6.QtGui import QIcon
20
 
21
 
21
 
22
 
22
 import sys
23
 import sys
65
             return self._data[index.row()][index.column()]
66
             return self._data[index.row()][index.column()]
66
         return None
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
 class MainWindow(QMainWindow):
130
 class MainWindow(QMainWindow):
69
     def __init__(self):
131
     def __init__(self):
70
         QMainWindow.__init__(self)
132
         QMainWindow.__init__(self)
113
         # 成果预览
175
         # 成果预览
114
         widgets.btn_new.clicked.connect(self.buttonClick)
176
         widgets.btn_new.clicked.connect(self.buttonClick)
115
         # 数据一览
177
         # 数据一览
116
-        widgets.btn_data.clicked.connect(self.buttonClick)
178
+        
117
         # 皮肤切换
179
         # 皮肤切换
118
         widgets.btn_message.clicked.connect(self.buttonClick)
180
         widgets.btn_message.clicked.connect(self.buttonClick)
119
         # 打开上传文件夹
181
         # 打开上传文件夹
145
         useCustomTheme = True
207
         useCustomTheme = True
146
         self.useCustomTheme = useCustomTheme
208
         self.useCustomTheme = useCustomTheme
147
         self.absPath = absPath
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
         # 设置主题和HACKS
213
         # 设置主题和HACKS
151
         if useCustomTheme:
214
         if useCustomTheme:
159
         # ///////////////////////////////////////////////////////////////
222
         # ///////////////////////////////////////////////////////////////
160
         widgets.stackedWidget.setCurrentWidget(widgets.home)
223
         widgets.stackedWidget.setCurrentWidget(widgets.home)
161
         widgets.btn_home.setStyleSheet(UIFunctions.selectMenu(widgets.btn_home.styleSheet()))
224
         widgets.btn_home.setStyleSheet(UIFunctions.selectMenu(widgets.btn_home.styleSheet()))
225
+
162
         self.bind()
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
     def bind(self):
257
     def bind(self):
166
         # 计算
258
         # 计算
167
         widgets.compute.clicked.connect(self.computeClick)
259
         widgets.compute.clicked.connect(self.computeClick)
260
+        #数据库展示(初始化)
261
+        widgets.btn_data.clicked.connect(self.dataClick)
168
 
262
 
169
     #删除tableview
263
     #删除tableview
170
     def delete_table_view(table_view):
264
     def delete_table_view(table_view):
414
             xx = xx + 1 
508
             xx = xx + 1 
415
         return model
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
     def computeClick(self):
560
     def computeClick(self):
418
         # GET BUTTON CLICKED
561
         # GET BUTTON CLICKED
419
         btn = self.sender()
562
         btn = self.sender()

+ 12
- 8
Front/modules/ui_main.py Vedi File

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

Loading…
Annulla
Salva