Просмотр исходного кода

初始化,最后一个页面

Mr.wzp 4 месяцев назад
Родитель
Сommit
84dda5b409
100 измененных файлов: 831 добавлений и 0 удалений
  1. 221
    0
      Back/GC/GC.py
  2. 344
    0
      Back/GC/GCcompute.py
  3. 72
    0
      Back/GC/GCshow.py
  4. 0
    0
      Back/GC/__init__.py
  5. Двоичные данные
      Back/GC/__pycache__/GC.cpython-312.pyc
  6. Двоичные данные
      Back/GC/__pycache__/GCcompute.cpython-312.pyc
  7. Двоичные данные
      Back/GC/__pycache__/GCshow.cpython-312.pyc
  8. Двоичные данные
      Back/GC/__pycache__/__init__.cpython-312.pyc
  9. 2
    0
      Back/GS/GS.py
  10. 2
    0
      Back/GS/GScompute.py
  11. 78
    0
      Back/GS/GSshow.py
  12. 0
    0
      Back/GS/__init__.py
  13. Двоичные данные
      Back/GS/__pycache__/GS.cpython-312.pyc
  14. Двоичные данные
      Back/GS/__pycache__/GScompute.cpython-312.pyc
  15. Двоичные данные
      Back/GS/__pycache__/GSshow.cpython-312.pyc
  16. Двоичные данные
      Back/GS/__pycache__/__init__.cpython-312.pyc
  17. 2
    0
      Back/WD/WD.py
  18. 2
    0
      Back/WD/WDcompute.py
  19. 7
    0
      Back/WD/WDshow.py
  20. 0
    0
      Back/WD/__init__.py
  21. Двоичные данные
      Back/WD/__pycache__/WD.cpython-312.pyc
  22. Двоичные данные
      Back/WD/__pycache__/WDcompute.cpython-312.pyc
  23. Двоичные данные
      Back/WD/__pycache__/WDshow.cpython-312.pyc
  24. Двоичные данные
      Back/WD/__pycache__/__init__.cpython-312.pyc
  25. 0
    0
      Back/__init__.py
  26. Двоичные данные
      Back/__pycache__/__init__.cpython-312.pyc
  27. 3
    0
      Front/.gitignore
  28. 21
    0
      Front/LICENSE
  29. 77
    0
      Front/README.md
  30. 0
    0
      Front/__init__.py
  31. Двоичные данные
      Front/icon.ico
  32. Двоичные данные
      Front/images/icons/1.png
  33. Двоичные данные
      Front/images/icons/2.png
  34. Двоичные данные
      Front/images/icons/3.png
  35. Двоичные данные
      Front/images/icons/4.png
  36. Двоичные данные
      Front/images/icons/No1.png
  37. Двоичные данные
      Front/images/icons/No2.png
  38. Двоичные данные
      Front/images/icons/No3.png
  39. Двоичные данные
      Front/images/icons/No4.png
  40. Двоичные данные
      Front/images/icons/arrow.png
  41. Двоичные данные
      Front/images/icons/cil-3d.png
  42. Двоичные данные
      Front/images/icons/cil-4k.png
  43. Двоичные данные
      Front/images/icons/cil-account-logout.png
  44. Двоичные данные
      Front/images/icons/cil-action-redo.png
  45. Двоичные данные
      Front/images/icons/cil-action-undo.png
  46. Двоичные данные
      Front/images/icons/cil-airplane-mode-off.png
  47. Двоичные данные
      Front/images/icons/cil-airplane-mode.png
  48. Двоичные данные
      Front/images/icons/cil-alarm.png
  49. Двоичные данные
      Front/images/icons/cil-align-center.png
  50. Двоичные данные
      Front/images/icons/cil-align-left.png
  51. Двоичные данные
      Front/images/icons/cil-align-right.png
  52. Двоичные данные
      Front/images/icons/cil-arrow-bottom-2.png
  53. Двоичные данные
      Front/images/icons/cil-arrow-bottom.png
  54. Двоичные данные
      Front/images/icons/cil-arrow-circle-bottom.png
  55. Двоичные данные
      Front/images/icons/cil-arrow-circle-left.png
  56. Двоичные данные
      Front/images/icons/cil-arrow-circle-right.png
  57. Двоичные данные
      Front/images/icons/cil-arrow-circle-top.png
  58. Двоичные данные
      Front/images/icons/cil-arrow-left.png
  59. Двоичные данные
      Front/images/icons/cil-arrow-right.png
  60. Двоичные данные
      Front/images/icons/cil-arrow-top.png
  61. Двоичные данные
      Front/images/icons/cil-at.png
  62. Двоичные данные
      Front/images/icons/cil-av-timer.png
  63. Двоичные данные
      Front/images/icons/cil-ban.png
  64. Двоичные данные
      Front/images/icons/cil-battery-0.png
  65. Двоичные данные
      Front/images/icons/cil-battery-3.png
  66. Двоичные данные
      Front/images/icons/cil-battery-5.png
  67. Двоичные данные
      Front/images/icons/cil-battery-alert.png
  68. Двоичные данные
      Front/images/icons/cil-battery-slash.png
  69. Двоичные данные
      Front/images/icons/cil-bell.png
  70. Двоичные данные
      Front/images/icons/cil-bluetooth.png
  71. Двоичные данные
      Front/images/icons/cil-briefcase.png
  72. Двоичные данные
      Front/images/icons/cil-browser.png
  73. Двоичные данные
      Front/images/icons/cil-calendar-check.png
  74. Двоичные данные
      Front/images/icons/cil-camera-roll.png
  75. Двоичные данные
      Front/images/icons/cil-camera.png
  76. Двоичные данные
      Front/images/icons/cil-caret-bottom.png
  77. Двоичные данные
      Front/images/icons/cil-caret-left.png
  78. Двоичные данные
      Front/images/icons/cil-caret-right.png
  79. Двоичные данные
      Front/images/icons/cil-caret-top.png
  80. Двоичные данные
      Front/images/icons/cil-cart.png
  81. Двоичные данные
      Front/images/icons/cil-cast.png
  82. Двоичные данные
      Front/images/icons/cil-chart-line.png
  83. Двоичные данные
      Front/images/icons/cil-chart-pie.png
  84. Двоичные данные
      Front/images/icons/cil-chart.png
  85. Двоичные данные
      Front/images/icons/cil-chat-bubble.png
  86. Двоичные данные
      Front/images/icons/cil-check-alt.png
  87. Двоичные данные
      Front/images/icons/cil-check-circle.png
  88. Двоичные данные
      Front/images/icons/cil-check.png
  89. Двоичные данные
      Front/images/icons/cil-chevron-bottom.png
  90. Двоичные данные
      Front/images/icons/cil-chevron-circle-down-alt.png
  91. Двоичные данные
      Front/images/icons/cil-chevron-circle-left-alt.png
  92. Двоичные данные
      Front/images/icons/cil-chevron-circle-right-alt.png
  93. Двоичные данные
      Front/images/icons/cil-chevron-circle-up-alt.png
  94. Двоичные данные
      Front/images/icons/cil-chevron-double-down.png
  95. Двоичные данные
      Front/images/icons/cil-chevron-double-left.png
  96. Двоичные данные
      Front/images/icons/cil-chevron-double-right.png
  97. Двоичные данные
      Front/images/icons/cil-chevron-double-up-alt.png
  98. Двоичные данные
      Front/images/icons/cil-chevron-double-up.png
  99. Двоичные данные
      Front/images/icons/cil-chevron-left.png
  100. 0
    0
      Front/images/icons/cil-chevron-right.png

+ 221
- 0
Back/GC/GC.py Просмотреть файл

@@ -0,0 +1,221 @@
1
+import openpyxl
2
+import sqlite3
3
+import os
4
+from openpyxl import Workbook
5
+from PySide6.QtWidgets import QApplication, QMessageBox
6
+
7
+
8
+# 读取指定单元格的数据
9
+def read_cells_from_excel(cells, sheet):
10
+    """
11
+    读取指定单元格的数据并返回字典。
12
+    """
13
+    cell_values = {}
14
+    for cell in cells:
15
+        cell_values[cell] = sheet[cell].value
16
+    return cell_values
17
+
18
+
19
+# 获取最后一行有数字的单元格值
20
+def get_last_numeric_cell_value(sheet, column):
21
+    """
22
+    获取指定列的最后一行有数字的单元格的值。
23
+    """
24
+    last_row = sheet.max_row
25
+    for row in range(last_row, 0, -1):
26
+        cell_value = sheet[f"{column}{row}"].value
27
+        if isinstance(cell_value, (int, float)):
28
+            return cell_value
29
+    return None
30
+
31
+
32
+# 计算指定列中数值型数据的总和
33
+def calculate_column_sum(sheet, column):
34
+    """
35
+    计算指定列中数值型数据的总和。
36
+    """
37
+    total_sum = 0
38
+    for row in range(1, sheet.max_row + 1):
39
+        cell_value = sheet[f"{column}{row}"].value
40
+        if isinstance(cell_value, (int, float)):
41
+            total_sum += cell_value
42
+    return total_sum
43
+
44
+
45
+# 读取Excel文件并计算公式结果
46
+def load_and_calculate_excel(file_path):
47
+    # 加载Excel文件并计算单元格H1的公式结果。
48
+    workbook = openpyxl.load_workbook(file_path, data_only=True)
49
+    sheet = workbook.active
50
+    h1_value = sheet['H1'].value
51
+    return h1_value
52
+
53
+
54
+# 弹窗提示用户是否更新数据
55
+def ask_for_update(file_name):
56
+    response = QMessageBox.question(None, "提示", f"检测到数据库中存在相同文件 '{file_name}',是(Yes)否(No)更新数据?",
57
+                                    QMessageBox.Yes | QMessageBox.No)
58
+    return response == QMessageBox.Yes
59
+
60
+
61
+# 数据库插入函数,插入数据到GC_Input_Param中
62
+def insert_into_database(file_name, cell_values, ms_station, last_station_count, new_station_count, last_sum_hdiff,
63
+                         new_sum_hdiff,
64
+                         last_sum_rlen, new_sum_rlen, db_path,file_name_utf8):
65
+    """
66
+    将文件名和结果名称插入或更新到数据库的GC_Input_Param表中。
67
+    """
68
+    database = db_path
69
+    conn = sqlite3.connect(database=database)
70
+    cursor = conn.cursor()
71
+    try:
72
+        # 查询是否已存在相同的记录
73
+        cursor.execute(
74
+            "SELECT * FROM GC_Input_Param WHERE TableName = ?",
75
+            (file_name_utf8,)
76
+        )
77
+        existing_record = cursor.fetchone()
78
+
79
+        if existing_record:
80
+            # 弹窗询问用户是否更新数据
81
+            if not ask_for_update(file_name):
82
+                print("用户选择不更新数据")
83
+                return
84
+
85
+            # 更新现有记录
86
+            cursor.execute(
87
+                """
88
+                UPDATE GC_Input_Param 
89
+                SET Last_ResultName = ?, ObservationLevel = ?, New_ResultName = ?, Ms_Station = ?, 
90
+                    Last_StationCount = ?, New_StationCount = ?, Last_SumHDiff = ?, New_SumHDiff = ?, 
91
+                    Last_SumRLen = ?, New_SumRLen = ?
92
+                WHERE TableName = ?
93
+                """,
94
+                (cell_values['D1'], cell_values['C1'], cell_values['I1'], ms_station, last_station_count,
95
+                 new_station_count, last_sum_hdiff, new_sum_hdiff, last_sum_rlen, new_sum_rlen, file_name_utf8)
96
+            )
97
+            QMessageBox.information(None,"提示",
98
+                                f"文件 '{file_name}' 已成功更新到本地数据库中,点击'OK'以关闭此对话框。对话框关闭后,请点击“计算”以重新计算数据")
99
+        else:
100
+            # 插入新记录
101
+            cursor.execute(
102
+                """
103
+                INSERT INTO GC_Input_Param (TableName, Last_ResultName, ObservationLevel, New_ResultName, Ms_Station, 
104
+                                            Last_StationCount, New_StationCount, Last_SumHDiff, New_SumHDiff, 
105
+                                            Last_SumRLen, New_SumRLen) 
106
+                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
107
+                """,
108
+                (file_name_utf8, cell_values['D1'], cell_values['C1'], cell_values['I1'], ms_station, last_station_count,
109
+                 new_station_count, last_sum_hdiff, new_sum_hdiff, last_sum_rlen, new_sum_rlen)
110
+            )
111
+            QMessageBox.information(None,"提示",
112
+                                f"文件 '{file_name}' 已成功添加到本地数据库中,点击'OK'以关闭此对话框。对话框关闭后,请点击“计算”以计算数据")
113
+
114
+        conn.commit()
115
+    except sqlite3.Error as e:
116
+        print(f"插入或更新文件名时发生错误: {e}")
117
+    except Exception as e:
118
+        print(f"处理文件时发生错误: {e}")
119
+    finally:
120
+        conn.close()
121
+
122
+
123
+# 遍历获取序号的数据
124
+def get_data_from_excel(file_path):
125
+    """
126
+    从 Excel 文件中获取对应列的数据。
127
+    """
128
+    workbook = openpyxl.load_workbook(file_path)
129
+    sheet = workbook.active
130
+    data = []
131
+    for row in range(3, sheet.max_row + 1):
132
+        a_value = sheet[f"A{row}"].value
133
+        b_value = sheet[f"B{row}"].value
134
+        c_value = sheet[f"C{row}"].value
135
+        d_value = sheet[f"D{row}"].value
136
+        e_value = sheet[f"E{row}"].value
137
+        f_value = sheet[f"F{row}"].value
138
+        g_value = sheet[f"G{row}"].value
139
+        h_value = sheet[f"H{row}"].value
140
+        i_value = sheet[f"I{row}"].value
141
+        j_value = sheet[f"J{row}"].value
142
+        if a_value is not None or f_value is not None:
143
+            data.append((a_value, b_value, c_value, d_value, e_value, f_value, g_value, h_value, i_value, j_value))
144
+    return data
145
+
146
+
147
+# 插入点数据到GC_Input_Point中
148
+def insert_data_into_database(data, file_name, cell_values, db_path,file_name_utf8):
149
+    """
150
+    将数据插入到数据库表 GC_Input_Point 中。如果 TableName 相同,则清空表,
151
+    然后插入新的数据。
152
+    """
153
+    database = db_path
154
+    conn = sqlite3.connect(database=database)
155
+    cursor = conn.cursor()
156
+
157
+    try:
158
+        # 检查是否已存在相同的 TableName
159
+        cursor.execute(
160
+            "SELECT * FROM GC_Input_Point WHERE TableName = ?",
161
+            (file_name_utf8,)
162
+        )
163
+        existing_record = cursor.fetchone()
164
+
165
+        if existing_record:
166
+            # 如果存在相同的 TableName,清空表
167
+            cursor.execute("DELETE FROM GC_Input_Point WHERE TableName = ?", (file_name_utf8,))
168
+            conn.commit()
169
+
170
+        # 插入新数据
171
+        for a_value, b_value, c_value, d_value, e_value, f_value, g_value, h_value, i_value, j_value in data:
172
+            cursor.execute(
173
+                """
174
+                INSERT INTO GC_Input_Point (Last_ID, Last_SPName, Last_EPName,Last_HDiff,Last_RLen, New_ID, New_SPName, New_EPName,New_HDiff,New_RLen, TableName, Last_ResultName, New_ResultName)
175
+                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
176
+                """,
177
+                (a_value, b_value, c_value, d_value, e_value, f_value, g_value, h_value, i_value, j_value, file_name_utf8,
178
+                 cell_values['D1'],
179
+                 cell_values['I1'])
180
+            )
181
+
182
+        conn.commit()
183
+    except sqlite3.Error as e:
184
+        print(f"插入或更新点数据时发生错误: {e}")
185
+    except Exception as e:
186
+        print(f"处理文件时发生错误: {e}")
187
+    finally:
188
+        conn.close()
189
+
190
+
191
+# 主函数 读取excel文件
192
+def main_function(file_path, db_path):
193
+    # 调用读取Excel文件的函数
194
+    file_name = os.path.basename(file_path)
195
+    file_name_utf8 = file_name.encode('utf-8')
196
+    # 加载工作簿
197
+    workbook = openpyxl.load_workbook(file_path)
198
+    sheet = workbook.active
199
+    # 计算单元格 H1 的公式结果
200
+    ms_station = load_and_calculate_excel(file_path)
201
+    # 读取指定单元格的数据
202
+    cells_to_read = ['D1', 'C1', 'I1']
203
+    cell_values = read_cells_from_excel(cells_to_read, sheet)
204
+    # 获取最后一行有数字的单元格值
205
+    last_station_count = get_last_numeric_cell_value(sheet, 'A')
206
+    new_station_count = get_last_numeric_cell_value(sheet, 'F')
207
+    # 计算 D 列和 I 列中数值型数据的总和  总高差
208
+    last_sum_hdiff = calculate_column_sum(sheet, 'D')
209
+    new_sum_hdiff = calculate_column_sum(sheet, 'I')
210
+    # 总路线长
211
+    last_sum_rlen = calculate_column_sum(sheet, 'E')
212
+    new_sum_rlen = calculate_column_sum(sheet, 'J')
213
+    # 插入点的数组
214
+    data = get_data_from_excel(file_path)
215
+    # 调用插入数据库的函数
216
+    if file_name:
217
+        insert_into_database(file_name, cell_values, ms_station, last_station_count, new_station_count, last_sum_hdiff,
218
+                             new_sum_hdiff, last_sum_rlen, new_sum_rlen, db_path,file_name_utf8)
219
+        insert_data_into_database(data, file_name, cell_values, db_path,file_name_utf8)
220
+    else:
221
+        print("没有数据可插入数据库")

+ 344
- 0
Back/GC/GCcompute.py Просмотреть файл

@@ -0,0 +1,344 @@
1
+import os
2
+import sqlite3
3
+import math
4
+
5
+
6
+def calculate_absolute_height_differences(db_path, file_name, field_name):
7
+    """
8
+    从数据库指定表中读取所有记录的字段,并计算其绝对值。
9
+    """
10
+    abs_values = []
11
+    with sqlite3.connect(db_path) as conn:
12
+        cursor = conn.cursor()
13
+        query = f"SELECT {field_name} FROM GC_Input_Point WHERE TableName = ?"
14
+        cursor.execute(query, (file_name,))
15
+        for row in cursor.fetchall():
16
+            # 检查是否为 None,如果是,则停止读取
17
+            if row[0] is None:
18
+                continue  # 停止读取
19
+            else:
20
+                abs_value = abs(row[0])
21
+                abs_values.append(abs_value)
22
+    return abs_values
23
+
24
+
25
+# 获取上期稳定测段
26
+def get_last_stable_section(values):
27
+    last_stable_section = sum(values)
28
+    return last_stable_section
29
+
30
+
31
+# 获取本期稳定测段
32
+def get_current_stable_section(abs_new_hdiffs, length_of_last_section):
33
+    current_stable_section = sum(abs_new_hdiffs[:length_of_last_section])
34
+    return current_stable_section
35
+
36
+
37
+# 获取较差
38
+def calculate_differences(abs_last_hdiffs, abs_new_hdiffs):
39
+    differences = [(last - new) * 1000 for last, new in zip(abs_last_hdiffs, abs_new_hdiffs[:len(abs_last_hdiffs)])]
40
+    return differences
41
+
42
+
43
+# 稳定测段的较差
44
+def calculate_stable_differences(last_stable_section, current_stable_section):
45
+    stable_differences = (current_stable_section - last_stable_section) * 1000
46
+    return stable_differences
47
+
48
+
49
+# 获取限值 total=True获取总路线长的限值 total=False获取单个测量点的限值 默认为False
50
+def calculate_limits(db_path, file_name, total=False):
51
+    try:
52
+        with sqlite3.connect(db_path) as conn:
53
+            cursor = conn.cursor()
54
+            query_last_rlen = "SELECT Last_RLen FROM GC_Input_Point WHERE TableName = ?"
55
+            query_new_rlen = "SELECT New_RLen FROM GC_Input_Point WHERE TableName = ?"
56
+            cursor.execute(query_last_rlen, (file_name,))
57
+            last_rlens = []
58
+            for row in cursor.fetchall():
59
+                if row[0] is None:
60
+                    continue
61
+                last_rlens.append(row[0])
62
+            cursor.execute(query_new_rlen, (file_name,))
63
+            new_rlens = []
64
+            for row in cursor.fetchall():
65
+                if row[0] is None:
66
+                    continue
67
+                new_rlens.append(row[0])
68
+            if not total:
69
+                # 计算单个测量点的限值
70
+                limit_values = []
71
+                for last_rlen, new_rlen in zip(last_rlens, new_rlens):
72
+                    if last_rlen is None:
73
+                        break
74
+                    calculated_value = 2 * math.sqrt(last_rlen + new_rlen)
75
+                    if calculated_value < 0.47:
76
+                        limit_values.append(0.47)
77
+                    else:
78
+                        limit_values.append(calculated_value)
79
+                return limit_values
80
+            else:
81
+                # 计算总路线长的限值
82
+                total_last_rlen = sum([rlen for rlen in last_rlens if rlen is not None])
83
+                total_new_rlen = sum(new_rlens[:len(last_rlens)])
84
+                calculated_value = 2 * math.sqrt(total_last_rlen + total_new_rlen)
85
+                if calculated_value < 0.47:
86
+                    total_limit = 0.47
87
+                else:
88
+                    total_limit = calculated_value
89
+                return total_limit
90
+    except sqlite3.Error as e:
91
+        print(f"Database error: {e}")
92
+        return []
93
+
94
+
95
+# 高程较差的变形判定  变形的位置存储为 "变形",未变形的位置存储为 None
96
+def detect_deformation(differences, limit_values):
97
+    deformation_results = [None] * len(differences)
98
+    for i, diff in enumerate(differences):
99
+        if abs(diff) > limit_values[i]:
100
+            deformation_results[i] = "变形"
101
+    return deformation_results
102
+
103
+
104
+# 第一次稳定分析
105
+def calculate_corrected_old_height_difference(abs_last_hdiffs, transformation_point):
106
+    # 上期改正高差
107
+    corrected_sum = 0.0
108
+    for i, value in enumerate(abs_last_hdiffs):
109
+        if transformation_point[i] != "变形":
110
+            corrected_sum += value
111
+    return corrected_sum
112
+
113
+
114
+def calculate_corrected_new_height_difference(abs_new_hdiffs, transformation_point, abs_last_hdiffs):
115
+    # 本期改正高差
116
+    n = len(abs_last_hdiffs)  # 使用 abs_last_hdiffs 的长度作为限制
117
+    corrected_sum = 0.0
118
+    for i in range(n):
119
+        if transformation_point[i] != "变形":
120
+            corrected_sum += abs_new_hdiffs[i]
121
+    return corrected_sum
122
+
123
+
124
+def calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last, corrected_sum_new):
125
+    # 改正高差绝对值
126
+    n = len(abs_new_hdiffs)
127
+    corrected_height_differences = []
128
+    for i in range(n):
129
+        corrected_value = abs_new_hdiffs[i] * (corrected_sum_last / corrected_sum_new)
130
+        corrected_height_differences.append(corrected_value)
131
+    return corrected_height_differences
132
+
133
+
134
+def detect_corrected_deformation(corrected_height_differences, abs_last_hdiffs, limit_values):
135
+    # 变形判定
136
+    deformation_results = [None] * len(corrected_height_differences)
137
+    for i in range(min(len(corrected_height_differences), len(limit_values))):
138
+        difference = abs((corrected_height_differences[i] - abs_last_hdiffs[i]) * 1000)
139
+        if difference > limit_values[i]:
140
+            deformation_results[i] = "变形"
141
+    # 对于超出部分,直接设置为 None
142
+    for i in range(len(limit_values), len(corrected_height_differences)):
143
+        deformation_results[i] = None
144
+    return deformation_results
145
+
146
+
147
+# 计算修正系数并更新数据库
148
+def update_correction_factor(db_path, file_name, corrected_sum_last_5, corrected_sum_new_5):
149
+    correction_factor = corrected_sum_last_5 / corrected_sum_new_5
150
+    # 更新数据库中的修正系数
151
+    with sqlite3.connect(db_path) as conn:
152
+        cursor = conn.cursor()
153
+        update_query = "UPDATE GC_Input_Param SET Correct_Factor = ? WHERE TableName = ?"
154
+        cursor.execute(update_query, (correction_factor, file_name))
155
+        conn.commit()
156
+
157
+
158
+# 从数据库中获取 New_HDiff 字段的数据
159
+def get_new_hdiffs(db_path, file_name):
160
+    new_hdiffs = []
161
+    with sqlite3.connect(db_path) as conn:
162
+        cursor = conn.cursor()
163
+        query = "SELECT New_HDiff FROM GC_Input_Point WHERE TableName = ?"
164
+        cursor.execute(query, (file_name,))
165
+        for row in cursor.fetchall():
166
+            if row[0] is None:
167
+                continue
168
+            else:
169
+                new_hdiffs.append(row[0])
170
+    return new_hdiffs
171
+
172
+
173
+def get_old_hdiffs(db_path, file_name):
174
+    old_hdiffs = []
175
+    with sqlite3.connect(db_path) as conn:
176
+        cursor = conn.cursor()
177
+        query = "SELECT Last_HDiff FROM GC_Input_Point WHERE TableName = ?"
178
+        cursor.execute(query, (file_name,))
179
+        for row in cursor.fetchall():
180
+            if row[0] is None:
181
+                continue
182
+            else:
183
+                old_hdiffs.append(row[0])
184
+    return old_hdiffs
185
+
186
+
187
+# 计算修正高差
188
+def calculate_corrected_height_differences_with_sin(new_hdiffs, corrected_height_differences_5):
189
+    corrected_height_differences_with_sin = []
190
+    for new_hdiff, corrected_diff in zip(new_hdiffs, corrected_height_differences_5):
191
+        corrected_diff_with_sin = math.copysign(1, new_hdiff) * corrected_diff
192
+        corrected_height_differences_with_sin.append(corrected_diff_with_sin)
193
+    return corrected_height_differences_with_sin
194
+
195
+
196
+# 计算修正数
197
+def calculate_correction_numbers(result_height_differences, new_hdiffs):
198
+    correction_numbers = [(rhd - nh) * 1000 for rhd, nh in zip(result_height_differences, new_hdiffs)]
199
+    return correction_numbers
200
+
201
+
202
+# 计算期间差异
203
+def calculate_period_differences(old_hdiffs, result_height_differences):
204
+    period_differences = []
205
+    for old_hdiff, result_diff in zip(old_hdiffs, result_height_differences):
206
+        if (old_hdiff >= 0 and result_diff >= 0) or (old_hdiff < 0 and result_diff < 0):
207
+            diff = (old_hdiff - result_diff) * 1000
208
+        else:
209
+            diff = (-old_hdiff - result_diff) * 1000
210
+        period_differences.append(diff)
211
+    return period_differences
212
+
213
+
214
+# 插入数据到Outpoint数据库
215
+def insert_records_to_output_table(db_path, file_name, dis_ass, new_hdiff, correction_numbers, period_differences):
216
+    with sqlite3.connect(db_path) as conn:
217
+        cursor = conn.cursor()
218
+        # 查询 GC_Input_Point 表中的数据
219
+        query = """
220
+            SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName
221
+            FROM GC_Input_Point
222
+            WHERE TableName = ?
223
+        """
224
+        cursor.execute(query, (file_name,))
225
+        records = cursor.fetchall()
226
+        # 检查是否存在相同的 TableName
227
+        check_query = """
228
+            SELECT COUNT(*)
229
+            FROM GC_Output_Point
230
+            WHERE TableName = ?
231
+        """
232
+        cursor.execute(check_query, (file_name,))
233
+        count = cursor.fetchone()[0]
234
+        # 获取最长数组的长度
235
+        max_length = max(len(dis_ass), len(new_hdiff), len(correction_numbers), len(period_differences))
236
+        # 填充缺失值
237
+        dis_ass = dis_ass + [None] * (max_length - len(dis_ass))
238
+        new_hdiff = new_hdiff + [None] * (max_length - len(new_hdiff))
239
+        correction_numbers = correction_numbers + [None] * (max_length - len(correction_numbers))
240
+        period_differences = period_differences + [None] * (max_length - len(period_differences))
241
+        if count > 0:
242
+            # 更新操作
243
+            update_query = """
244
+                UPDATE GC_Output_Point
245
+                SET Dis_Ass = ?, New_HDiff = ?, Correct_Factor = ?, Period_Diff = ?
246
+                WHERE New_ID = ? AND TableName = ?
247
+            """
248
+            updated_records = []
249
+            for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
250
+                                                                                              new_hdiff,
251
+                                                                                              correction_numbers,
252
+                                                                                              period_differences):
253
+                updated_record = [deformation_result, height_difference, correction, period_diff, record[0], file_name]
254
+                updated_records.append(updated_record)
255
+            cursor.executemany(update_query, updated_records)
256
+        else:
257
+            # 插入操作
258
+            insert_query = """
259
+                INSERT INTO GC_Output_Point (New_ID, New_ResultName, New_SPName, New_EPName, New_RLen, TableName, Dis_Ass, New_HDiff, Correct_Factor, Period_Diff)
260
+                VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
261
+            """
262
+            updated_records = []
263
+            for record, deformation_result, height_difference, correction, period_diff in zip(records, dis_ass,
264
+                                                                                              new_hdiff,
265
+                                                                                              correction_numbers,
266
+                                                                                              period_differences):
267
+                updated_record = list(record) + [deformation_result, height_difference, correction, period_diff]
268
+                updated_records.append(updated_record)
269
+            cursor.executemany(insert_query, updated_records)
270
+        conn.commit()
271
+
272
+
273
+def main_function(file_path, db_path):
274
+    # 获取文件名
275
+    file_name = os.path.basename(file_path)
276
+    file_name_utf8 = file_name.encode('utf-8')
277
+    # 处理查询结果
278
+    abs_last_hdiffs = calculate_absolute_height_differences(db_path, file_name_utf8, "Last_HDiff")
279
+    abs_new_hdiffs = calculate_absolute_height_differences(db_path, file_name_utf8, "New_HDiff")
280
+    # 获取稳定测段
281
+    # last_stable_section = get_last_stable_section(abs_last_hdiffs)
282
+    # current_stable_section = get_current_stable_section(abs_new_hdiffs, len(abs_last_hdiffs))
283
+    # 计算较差
284
+    differences = calculate_differences(abs_last_hdiffs, abs_new_hdiffs)
285
+    # stable_differences = calculate_stable_differences(last_stable_section, current_stable_section)
286
+    # 计算限值
287
+    limit_values = calculate_limits(db_path, file_name_utf8)
288
+    # total_limit = calculate_limits(db_path, file_name, total=True)
289
+    # 高程较差的变形判定
290
+    deformation_results = detect_deformation(differences, limit_values)
291
+    # 第一次稳定分析
292
+    corrected_sum_last_1 = calculate_corrected_old_height_difference(abs_last_hdiffs, deformation_results)  # 上期改正高差
293
+    corrected_sum_new_1 = calculate_corrected_new_height_difference(abs_new_hdiffs, deformation_results,
294
+                                                                    abs_last_hdiffs)  # 本期改正高差
295
+    corrected_height_differences_1 = calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last_1,
296
+                                                                            corrected_sum_new_1)  # 改正高差绝对值
297
+    first_deformation_results = detect_corrected_deformation(corrected_height_differences_1, abs_last_hdiffs,
298
+                                                             limit_values)  # 第一次稳定分析的变形判定
299
+    # 第二次稳定分析
300
+    corrected_sum_last_2 = calculate_corrected_old_height_difference(abs_last_hdiffs, first_deformation_results)
301
+    corrected_sum_new_2 = calculate_corrected_new_height_difference(abs_new_hdiffs, first_deformation_results,
302
+                                                                    abs_last_hdiffs)
303
+    corrected_height_differences_2 = calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last_2,
304
+                                                                            corrected_sum_new_2)
305
+    second_deformation_results = detect_corrected_deformation(corrected_height_differences_2, abs_last_hdiffs,
306
+                                                              limit_values)
307
+    # 第三次稳定分析
308
+    corrected_sum_last_3 = calculate_corrected_old_height_difference(abs_last_hdiffs, second_deformation_results)
309
+    corrected_sum_new_3 = calculate_corrected_new_height_difference(abs_new_hdiffs, second_deformation_results,
310
+                                                                    abs_last_hdiffs)
311
+    corrected_height_differences_3 = calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last_3,
312
+                                                                            corrected_sum_new_3)
313
+    third_deformation_results = detect_corrected_deformation(corrected_height_differences_3, abs_last_hdiffs,
314
+                                                             limit_values)
315
+    # 第四次稳定分析
316
+    corrected_sum_last_4 = calculate_corrected_old_height_difference(abs_last_hdiffs, third_deformation_results)
317
+    corrected_sum_new_4 = calculate_corrected_new_height_difference(abs_new_hdiffs, third_deformation_results,
318
+                                                                    abs_last_hdiffs)
319
+    corrected_height_differences_4 = calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last_4,
320
+                                                                            corrected_sum_new_4)
321
+    fourth_deformation_results = detect_corrected_deformation(corrected_height_differences_4, abs_last_hdiffs,
322
+                                                              limit_values)
323
+    # 第五次稳定分析
324
+    corrected_sum_last_5 = calculate_corrected_old_height_difference(abs_last_hdiffs, fourth_deformation_results)
325
+    corrected_sum_new_5 = calculate_corrected_new_height_difference(abs_new_hdiffs, fourth_deformation_results,
326
+                                                                    abs_last_hdiffs)
327
+    corrected_height_differences_5 = calculate_corrected_height_differences(abs_new_hdiffs, corrected_sum_last_5,
328
+                                                                            corrected_sum_new_5)
329
+    fifth_deformation_results = detect_corrected_deformation(corrected_height_differences_5, abs_last_hdiffs,
330
+                                                             limit_values)  # 第五次稳定分析的变形判定
331
+    # 更新数据库中的修正系数
332
+    update_correction_factor(db_path, file_name_utf8, corrected_sum_last_5, corrected_sum_new_5)
333
+    # 成果的高差
334
+    new_hdiffs = get_new_hdiffs(db_path, file_name_utf8)
335
+    old_hdiffs = get_old_hdiffs(db_path, file_name_utf8)
336
+    result_height_differences = calculate_corrected_height_differences_with_sin(new_hdiffs,
337
+                                                                                corrected_height_differences_5)  # 结果高差
338
+    # 修正数
339
+    correction_numbers = calculate_correction_numbers(result_height_differences, new_hdiffs)
340
+    # 计算期间差异
341
+    period_differences = calculate_period_differences(old_hdiffs, result_height_differences)
342
+    # 插入数据到Outpoint数据库表
343
+    insert_records_to_output_table(db_path, file_name_utf8, fifth_deformation_results, result_height_differences,
344
+                                   correction_numbers, period_differences)

+ 72
- 0
Back/GC/GCshow.py Просмотреть файл

@@ -0,0 +1,72 @@
1
+import sqlite3
2
+
3
+from PySide6.QtGui import QStandardItemModel
4
+
5
+
6
+def main_function(ui, db_path, utf_en):
7
+    # 确保 utf_en 是字节字符串
8
+    if not isinstance(utf_en, bytes):
9
+        utf_en = utf_en.encode('utf-8')
10
+
11
+    # 设置 QTabWidget 的可见性和标签文本
12
+    tabs_to_show = [(0, '水准测段高差计算成果表')]
13
+    for index in range(ui.tabWidget.count()):
14
+        visible = index in [t[0] for t in tabs_to_show]
15
+        ui.tabWidget.setTabVisible(index, visible)
16
+    for index, text in tabs_to_show:
17
+        ui.tabWidget.setTabText(index, text)
18
+
19
+    # 连接到数据库并执行查询
20
+    db1 = sqlite3.connect(db_path)
21
+    db1.text_factory = lambda x: str(x, 'utf-8')
22
+    cursor1 = db1.cursor()
23
+
24
+    # 查询 GC_Output_Point 表中的 TableName 字段
25
+    query_table_names = "SELECT DISTINCT TableName FROM GC_Output_Point"
26
+    cursor1.execute(query_table_names)
27
+    table_names = cursor1.fetchall()
28
+    table_names = [name[0] for name in table_names]
29
+
30
+    # 打印 TableName 字段的值
31
+    print("Table Names in GC_Output_Point:")
32
+    for name in table_names:
33
+        print(name)
34
+
35
+    query = """
36
+    SELECT New_ID, New_ResultName, New_SPName, New_EPName, New_HDiff, New_RLen, Correct_Factor, Period_Diff, Dis_Ass
37
+    FROM GC_Output_Point
38
+    WHERE TableName = ?
39
+    """
40
+    cursor1.execute(query, (utf_en,))
41
+    result = cursor1.fetchall()
42
+    cursor1.close()
43
+    db1.close()
44
+
45
+    # 检查查询结果
46
+    if not result:
47
+        print("查询结果为空")
48
+        return
49
+
50
+    # 打印查询结果以检查数据类型
51
+    print("查询结果:")
52
+    for row in result:
53
+        print(row)
54
+        # 检查每一列的数据类型
55
+        # for i, value in enumerate(row):
56
+        #     print(f"列 {i} 数据类型: {type(value)}")
57
+
58
+#     创建QStandardItemModel 实例
59
+    model = QStandardItemModel()
60
+    model.setColumnCount(len(result[0]))
61
+
62
+#     设置表头
63
+    headers = ['序号', '结果期数', '起点', '终点', '高差', '路线长', '修正数', '期间差异', '变形判定']
64
+    model.setHorizontalHeaderLabels(headers)
65
+
66
+    for row_data in result:
67
+        items = [QStandardItemModel(str(item))for item in row_data]
68
+        model.appendRow(items)
69
+
70
+    ui.resultTableView.setModel(model)
71
+    ui.resultTableView.show()
72
+

+ 0
- 0
Back/GC/__init__.py Просмотреть файл


Двоичные данные
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 Просмотреть файл


+ 2
- 0
Back/GS/GS.py Просмотреть файл

@@ -0,0 +1,2 @@
1
+def main_function(file_path, db_path):
2
+    print("这是GS")

+ 2
- 0
Back/GS/GScompute.py Просмотреть файл

@@ -0,0 +1,2 @@
1
+def main_function(file_path, db_path):
2
+    print("GS")

+ 78
- 0
Back/GS/GSshow.py Просмотреть файл

@@ -0,0 +1,78 @@
1
+import sqlite3
2
+
3
+from PySide6.QtGui import QStandardItemModel
4
+
5
+
6
+def main_function(ui, db_path, utf_en):
7
+    # 就用已有的选项卡
8
+    ui.tabWidget.setTabVisible(0, True)
9
+    ui.tabWidget.setTabVisible(1, True)
10
+    ui.tabWidget.setTabVisible(2, True)
11
+    # 重新设置文字名称
12
+    ui.tabWidget.setTabText(0, '复测成果表')
13
+    ui.tabWidget.setTabText(1, '基准归算模型')
14
+    ui.tabWidget.setTabText(2, '复测基准归算表')
15
+    # 连接到数据库
16
+    db1 = sqlite3.connect(db_path)
17
+    db1.text_factory = lambda x: str(x, 'utf-8')
18
+    cursor1 = db1.cursor()
19
+    # 查询表内符合的所有数据(分成两个结果分别显示)
20
+    # 注意查询中的tablename,数据库中如果没有相同的表名,会报错,所以需要先判断一下
21
+    # 复测成果表
22
+    sqlstr1 = 'select PointName,Last_X,Last_Y,Result_X,Result_Y,Last_ResultX,Last_ResultY,Last_ResultP,Dis_Ass from GS_Result_Point WHERE TableName = ?'
23
+    cursor1.execute(sqlstr1, (utf_en,))
24
+    result1 = cursor1.fetchall()
25
+
26
+    # 基准归算表
27
+    sqlstr11 = 'select PointName,Cal_X,Cal_Y,Last_CalX,Last_CalY,Last_CalP,Dis_Ass from GS_Result_Point WHERE TableName = ?'
28
+    cursor1.execute(sqlstr11, (utf_en,))
29
+    result2 = cursor1.fetchall()
30
+
31
+    # 对结果集进行处理,把汉字转换过来, 添加表头部分
32
+    nlist1, plist1 = ui.Arrange_Data1(result1)
33
+    nlist2, plist2 = ui.Arrange_Data2(result2)
34
+
35
+    # 创建一个数据模型(复测成果表)
36
+    model1 = QStandardItemModel()
37
+    model1 = ui.Data_in_Cell1(plist1)
38
+    model1.setHorizontalHeaderLabels(
39
+        ['点名', '前期X', '前期Y', '本期X', '本期Y', '前期-本期X', '前期-本期Y', '前期-本期P', '位移判定'])
40
+    model1.setVerticalHeaderLabels(nlist1)
41
+    ui.resultTableView.setModel(model1)
42
+    ui.resultTableView.show()
43
+
44
+    # 创建一个数据模型(基准归算表)
45
+    model2 = QStandardItemModel()
46
+    model2 = ui.Data_in_Cell2(plist2)
47
+    model2.setHorizontalHeaderLabels(
48
+        ['点名', '基准归算X', '基准归算Y', '前期-归算X', '前期-归算Y', '前期-归算P', '位移判定'])
49
+    model2.setVerticalHeaderLabels(nlist2)
50
+    ui.reconTableView.setModel(model2)
51
+    ui.reconTableView.show()
52
+
53
+    # 富文本的html
54
+    sqlstr2 = 'select Last_ResultName, New_ResultName, Formula_X1, Formula_X2, Formula_X3, Formula_Y1, Formula_Y2, Formula_Y3 from GS_Trans_Param WHERE TableName = ?'
55
+    cursor1.execute(sqlstr2, (utf_en,))
56
+    result3 = cursor1.fetchone()
57
+    # 检查 result3 是否为 None
58
+    if result3 is None:
59
+        str0 = "<p>未找到相关数据。</p>"
60
+    else:
61
+        str1 = result3[0].decode('utf-8') if isinstance(result3[0], bytes) else result3[0]
62
+        str2 = result3[1].decode('utf-8') if isinstance(result3[1], bytes) else result3[1]
63
+        n1, n2, n3, n4, n5, n6 = result3[2], result3[3], result3[4], result3[5], result3[6], result3[7]
64
+
65
+        str0 = f"""<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
66
+<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">
67
+p, li {{ white-space: pre-wrap; }}
68
+hr {{ height: 1px; border-width: 0; }}
69
+li.unchecked::marker {{ content: "\\2610"; }}
70
+li.checked::marker {{ content: "\\2612"; }}
71
+</style></head><body style=" font-family:'Microsoft YaHei UI'; font-size:9pt; font-weight:400; font-style:normal;">
72
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt; color:#000000;">{str2}--{str1}</span><span style=" font-size:14pt;">已知系统转换公式:</span></p>
73
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt; font-weight:700;">X</span><span style=" font-size:14pt;">=({n1})</span><span style=" font-size:14pt; font-weight:700;">x</span><span style=" font-size:14pt;">+({n2})</span><span style=" font-size:14pt; font-weight:700;">y</span><span style=" font-size:14pt;">+({n3})</span></p>
74
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt; font-weight:700;">Y</span><span style=" font-size:14pt;">=({n4})</span><span style=" font-size:14pt; font-weight:700;">x</span><span style=" font-size:14pt;">+({n5})</span><span style=" font-size:14pt; font-weight:700;">y</span><span style=" font-size:14pt;">+({n6})</span></p>
75
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt;">式中:</span><span style=" font-size:14pt; font-weight:700; color:#000000;">x、y</span><span style=" font-size:14pt;">为{str2}坐标;</span></p>
76
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:14pt;">          </span><span style=" font-size:14pt; font-weight:700;">X、Y</span><span style=" font-size:14pt;">为{str1}已知系统的{str2}归算坐标。</span></p></body></html>"""
77
+
78
+    ui.printTableView.setHtml(str0)

+ 0
- 0
Back/GS/__init__.py Просмотреть файл


Двоичные данные
Back/GS/__pycache__/GS.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/GS/__pycache__/GScompute.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/GS/__pycache__/GSshow.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/GS/__pycache__/__init__.cpython-312.pyc Просмотреть файл


+ 2
- 0
Back/WD/WD.py Просмотреть файл

@@ -0,0 +1,2 @@
1
+def main_function(file_path, db_path):
2
+    print("这是WD")

+ 2
- 0
Back/WD/WDcompute.py Просмотреть файл

@@ -0,0 +1,2 @@
1
+def main_function(file_path, db_path):
2
+    pass  # 添加计算的方法

+ 7
- 0
Back/WD/WDshow.py Просмотреть файл

@@ -0,0 +1,7 @@
1
+def main_function(ui, file_path, db_path):
2
+    # 只显示一个tab
3
+    ui.tabWidget.setTabVisible(0, True)
4
+    ui.tabWidget.setTabVisible(1, False)
5
+    ui.tabWidget.setTabVisible(2, False)
6
+    # 重新设置文字名称
7
+    ui.tabWidget.setTabText(0, '平面控制网稳定性计算成果表')

+ 0
- 0
Back/WD/__init__.py Просмотреть файл


Двоичные данные
Back/WD/__pycache__/WD.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/WD/__pycache__/WDcompute.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/WD/__pycache__/WDshow.cpython-312.pyc Просмотреть файл


Двоичные данные
Back/WD/__pycache__/__init__.cpython-312.pyc Просмотреть файл


+ 0
- 0
Back/__init__.py Просмотреть файл


Двоичные данные
Back/__pycache__/__init__.cpython-312.pyc Просмотреть файл


+ 3
- 0
Front/.gitignore Просмотреть файл

@@ -0,0 +1,3 @@
1
+__pycache__/
2
+.git/
3
+.pyc

+ 21
- 0
Front/LICENSE Просмотреть файл

@@ -0,0 +1,21 @@
1
+MIT License
2
+
3
+Copyright (c) 2021 Wanderson M. Pimenta
4
+
5
+Permission is hereby granted, free of charge, to any person obtaining a copy
6
+of this software and associated documentation files (the "Software"), to deal
7
+in the Software without restriction, including without limitation the rights
8
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+copies of the Software, and to permit persons to whom the Software is
10
+furnished to do so, subject to the following conditions:
11
+
12
+The above copyright notice and this permission notice shall be included in all
13
+copies or substantial portions of the Software.
14
+
15
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+SOFTWARE.

+ 77
- 0
Front/README.md Просмотреть файл

@@ -0,0 +1,77 @@
1
+# PyDracula - Modern GUI PySide6 / PyQt6
2
+# 
3
+
4
+> ## :gift: **//// DONATE ////**
5
+> ## 🔗 Donate (Gumroad): https://gum.co/mHsRC
6
+> This interface is free for any use, but if you are going to use it commercially, consider helping to maintain this project and others with a donation by Gumroado at the link above. This helps to keep this and other projects active.
7
+
8
+> **Warning**: this project was created using PySide6 and Python 3.9, using previous versions can cause compatibility problems.
9
+
10
+# YouTube - Presentation And Tutorial
11
+Presentation and tutorial video with the main functions of the user interface.
12
+> 🔗 https://youtu.be/9DnaHg4M_AM
13
+
14
+# Multiple Themes
15
+![PyDracula_Default_Dark](https://user-images.githubusercontent.com/60605512/112993874-0b647700-9140-11eb-8670-61322d70dbe3.png)
16
+![PyDracula_Light](https://user-images.githubusercontent.com/60605512/112993918-18816600-9140-11eb-837c-e7a7c3d2b05e.png)
17
+
18
+# High DPI
19
+> Qt Widgets is an old technology and does not have a good support for high DPI settings, making these images look distorted when your system has DPI applied above 100%.
20
+You can minimize this problem using a workaround by applying this code below in "main.py" just below the import of the Qt modules.
21
+```python
22
+# ADJUST QT FONT DPI FOR HIGHT SCALE
23
+# ///////////////////////////////////////////////////////////////
24
+from modules import *
25
+from widgets import *
26
+os.environ["QT_FONT_DPI"] = "96"
27
+```
28
+
29
+# Running
30
+> Inside your preferred terminal run the commands below depending on your system, remembering before installing Python 3.9> and PySide6 "pip install PySide6".
31
+> ## **Windows**:
32
+```console
33
+python main.py
34
+```
35
+> ## **MacOS and Linux**:
36
+```console
37
+python3 main.py
38
+```
39
+# Compiling
40
+> ## **Windows**:
41
+```console
42
+python setup.py build
43
+```
44
+
45
+# Project Files And Folders
46
+> **main.py**: application initialization file.
47
+
48
+> **main.ui**: Qt Designer project.
49
+
50
+> **resouces.qrc**: Qt Designer resoucers, add here your resources using Qt Designer. Use version 6 >
51
+
52
+> **setup.py**: cx-Freeze setup to compile your application (configured for Windows).
53
+
54
+> **themes/**: add here your themes (.qss).
55
+
56
+> **modules/**: module for running PyDracula GUI.
57
+
58
+> **modules/app_funtions.py**: add your application's functions here.
59
+Up
60
+> **modules/app_settings.py**: global variables to configure user interface.
61
+
62
+> **modules/resources_rc.py**: "resource.qrc" file compiled for python using the command: ```pyside6-rcc resources.qrc -o resources_rc.py```.
63
+
64
+> **modules/ui_functions.py**: add here only functions related to the user interface / GUI.
65
+
66
+> **modules/ui_main.py**: file related to the user interface exported by Qt Designer. You can compile it manually using the command: ```pyside6-uic main.ui> ui_main.py ```.
67
+After expoting in .py and change the line "import resources_rc" to "from. Resoucers_rc import *" to use as a module.
68
+
69
+> **images/**: put all your images and icons here before converting to Python (resources_re.py) ```pyside6-rcc resources.qrc -o resources_rc.py```.
70
+
71
+# Projects Created Using PyDracula
72
+**See the projects that were created using PyDracula.**
73
+> To participate create a "Issue" with the name beginning with "#pydracula_project", leaving the link of your project on Github, name of the creator and what is its functionality. Your project will be added and this list will be deleted from "Issue".
74
+**Malicious programs will not be added**!
75
+
76
+
77
+

+ 0
- 0
Front/__init__.py Просмотреть файл


Двоичные данные
Front/icon.ico Просмотреть файл


Двоичные данные
Front/images/icons/1.png Просмотреть файл


Двоичные данные
Front/images/icons/2.png Просмотреть файл


Двоичные данные
Front/images/icons/3.png Просмотреть файл


Двоичные данные
Front/images/icons/4.png Просмотреть файл


Двоичные данные
Front/images/icons/No1.png Просмотреть файл


Двоичные данные
Front/images/icons/No2.png Просмотреть файл


Двоичные данные
Front/images/icons/No3.png Просмотреть файл


Двоичные данные
Front/images/icons/No4.png Просмотреть файл


Двоичные данные
Front/images/icons/arrow.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-3d.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-4k.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-account-logout.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-action-redo.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-action-undo.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-airplane-mode-off.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-airplane-mode.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-alarm.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-align-center.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-align-left.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-align-right.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-bottom-2.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-bottom.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-circle-bottom.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-circle-left.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-circle-right.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-circle-top.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-left.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-right.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-arrow-top.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-at.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-av-timer.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-ban.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-battery-0.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-battery-3.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-battery-5.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-battery-alert.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-battery-slash.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-bell.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-bluetooth.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-briefcase.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-browser.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-calendar-check.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-camera-roll.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-camera.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-caret-bottom.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-caret-left.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-caret-right.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-caret-top.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-cart.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-cast.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chart-line.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chart-pie.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chart.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chat-bubble.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-check-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-check-circle.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-check.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-bottom.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-circle-down-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-circle-left-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-circle-right-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-circle-up-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-double-down.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-double-left.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-double-right.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-double-up-alt.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-double-up.png Просмотреть файл


Двоичные данные
Front/images/icons/cil-chevron-left.png Просмотреть файл


+ 0
- 0
Front/images/icons/cil-chevron-right.png Просмотреть файл


Некоторые файлы не были показаны из-за большого количества измененных файлов

Загрузка…
Отмена
Сохранить