Skip to content

Commit ac8a0dc

Browse files
committed
v2.3.6_开始打包
1 parent 73716fb commit ac8a0dc

24 files changed

Lines changed: 143 additions & 2075 deletions

CHANGELOG/v2.3.6/CHANGELOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<img width="1800" height="766" alt="新版本" src="https://github.com/SECTL/SecRandom/blob/master/data/assets/icon/secrandom-release.png" />
2+
3+
v2.3 - Shiroko (砂狼白子) release 5
4+
5+
> 在 ava 重构阶段期间,我们将不再大幅新增功能,重心放在性能优化与问题修复上
6+
>
7+
> 敬请期待基于 ava 架构的 v3 版本,性能与体验全面升级!
8+
9+
## 🚀 主要更新
10+
11+
-
12+
13+
## 💡 功能优化
14+
15+
- 优化了一些已知问题
16+
17+
## 🐛 修复问题
18+
19+
- 修复了一些已知问题
20+
21+
## 🔧 其它变更
22+
23+
- 重构期内的 **版本公告** 功能,用户可以选择是否关闭版本公告
24+
25+
---
26+
27+
💝 **感谢所有贡献者为 SecRandom 项目付出的努力!**

app/common/display/result_display.py

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -830,97 +830,6 @@ def dispose_widgets(widgets):
830830
widget.setParent(None)
831831
widget.deleteLater()
832832

833-
@staticmethod
834-
def update_animation_labels_fast(
835-
cached_labels,
836-
new_texts,
837-
new_colors,
838-
font_size,
839-
settings_group="roll_call_settings",
840-
):
841-
"""
842-
快速更新动画标签(优化性能版本)
843-
844-
直接更新现有标签的文本和颜色,避免创建新widget
845-
846-
参数:
847-
cached_labels: 缓存的标签列表
848-
new_texts: 新文本列表
849-
new_colors: 新颜色列表
850-
font_size: 字体大小
851-
settings_group: 设置组名称
852-
853-
返回:
854-
bool: 是否成功更新
855-
"""
856-
if not cached_labels or not new_texts:
857-
return False
858-
859-
if len(cached_labels) != len(new_texts):
860-
return False
861-
862-
try:
863-
for i, label in enumerate(cached_labels):
864-
if label is None:
865-
continue
866-
867-
text = new_texts[i]
868-
color = new_colors[i] if i < len(new_colors) else "#000000"
869-
870-
style_sheet = f"font-size: {font_size}pt; color: {color} !important;"
871-
872-
ResultDisplayUtils._update_label_text_and_style(
873-
label, text, style_sheet
874-
)
875-
876-
return True
877-
except Exception as e:
878-
logger.debug(f"快速更新动画标签失败: {e}")
879-
return False
880-
881-
@staticmethod
882-
def _update_label_text_and_style(widget, text, style_sheet):
883-
"""
884-
递归更新widget及其子widget的文本和样式
885-
886-
参数:
887-
widget: 要更新的widget
888-
text: 新文本
889-
style_sheet: 新样式表
890-
"""
891-
if widget is None:
892-
return
893-
894-
if isinstance(widget, BodyLabel):
895-
widget.setText(text)
896-
widget.setStyleSheet(style_sheet)
897-
return
898-
899-
if isinstance(widget, QLabel):
900-
widget.setText(text)
901-
widget.setStyleSheet(style_sheet)
902-
return
903-
904-
layout = widget.layout() if hasattr(widget, "layout") else None
905-
if layout is not None:
906-
first_text_widget = None
907-
for i in range(layout.count()):
908-
item = layout.itemAt(i)
909-
if item is None:
910-
continue
911-
child = item.widget()
912-
if child is not None:
913-
if first_text_widget is None and isinstance(
914-
child, (BodyLabel, QLabel)
915-
):
916-
first_text_widget = child
917-
elif isinstance(child, (BodyLabel, QLabel)):
918-
child.setStyleSheet(style_sheet)
919-
920-
if first_text_widget is not None:
921-
first_text_widget.setText(text)
922-
first_text_widget.setStyleSheet(style_sheet)
923-
924833
@staticmethod
925834
def update_grid_labels(result_grid, new_labels, cached_labels):
926835
"""

app/common/lottery/lottery_manager.py

Lines changed: 8 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1200,75 +1200,6 @@ def display_result_animated(
12001200
if draw_count is None:
12011201
draw_count = widget.current_count
12021202

1203-
cached_widgets = getattr(widget, "_cached_animation_widgets", None)
1204-
cached_count = len(cached_widgets) if cached_widgets else 0
1205-
current_count = len(selected_students) if selected_students else 0
1206-
1207-
if cached_widgets and cached_count == current_count and current_count > 0:
1208-
new_texts = []
1209-
new_colors = []
1210-
font_size = render_settings.get("font_size", 50)
1211-
animation_color = render_settings.get("animation_color", 0)
1212-
display_format = render_settings.get("display_format", 0)
1213-
1214-
for item in selected_students:
1215-
if isinstance(item, (list, tuple)) and len(item) >= 2:
1216-
student_id = str(item[0]) if item[0] is not None else ""
1217-
name = str(item[1])
1218-
else:
1219-
student_id = ""
1220-
name = str(item)
1221-
1222-
from app.common.display.result_display import (
1223-
STUDENT_ID_FORMAT,
1224-
NAME_SPACING,
1225-
)
1226-
1227-
student_id_str = (
1228-
STUDENT_ID_FORMAT.format(num=student_id) if student_id else ""
1229-
)
1230-
1231-
formatted_name = (
1232-
f"{name[0]}{NAME_SPACING}{name[1]}" if len(name) == 2 else name
1233-
)
1234-
1235-
if display_format == 1:
1236-
text = formatted_name
1237-
elif display_format == 2:
1238-
text = student_id_str if student_id_str else formatted_name
1239-
else:
1240-
if draw_count == 1:
1241-
text = (
1242-
f"{student_id_str}\n{formatted_name}"
1243-
if student_id_str
1244-
else formatted_name
1245-
)
1246-
else:
1247-
text = (
1248-
f"{student_id_str} {formatted_name}"
1249-
if student_id_str
1250-
else formatted_name
1251-
)
1252-
new_texts.append(text)
1253-
1254-
if animation_color == 1:
1255-
color = ResultDisplayUtils._generate_vibrant_color()
1256-
elif animation_color == 2:
1257-
fixed_color = render_settings.get("animation_fixed_color", "#000000")
1258-
color = fixed_color
1259-
else:
1260-
from app.tools.personalised import is_dark_theme
1261-
from qfluentwidgets import qconfig
1262-
1263-
color = "#ffffff" if is_dark_theme(qconfig) else "#000000"
1264-
new_colors.append(color)
1265-
1266-
updated = ResultDisplayUtils.update_animation_labels_fast(
1267-
cached_widgets, new_texts, new_colors, font_size, "lottery_settings"
1268-
)
1269-
if updated:
1270-
return
1271-
12721203
student_labels = ResultDisplayUtils.create_student_label(
12731204
class_name=pool_name,
12741205
selected_students=selected_students,
@@ -1285,18 +1216,19 @@ def display_result_animated(
12851216
settings_group="lottery_settings",
12861217
show_tags=bool(render_settings.get("show_tags")),
12871218
)
1288-
1289-
if cached_widgets and cached_count == current_count:
1219+
cached_widgets = ResultDisplayUtils.collect_grid_widgets(widget.result_grid)
1220+
if cached_widgets and len(cached_widgets) == len(student_labels):
12901221
updated = ResultDisplayUtils.update_grid_labels(
12911222
widget.result_grid, student_labels, cached_widgets
12921223
)
12931224
if updated:
12941225
ResultDisplayUtils.dispose_widgets(student_labels)
1295-
widget._cached_animation_widgets = cached_widgets
1296-
return
1297-
1298-
ResultDisplayUtils.display_results_in_grid(widget.result_grid, student_labels)
1299-
widget._cached_animation_widgets = student_labels
1226+
else:
1227+
ResultDisplayUtils.display_results_in_grid(
1228+
widget.result_grid, student_labels
1229+
)
1230+
else:
1231+
ResultDisplayUtils.display_results_in_grid(widget.result_grid, student_labels)
13001232

13011233
settings = widget.manager.get_notification_settings(pool_name, refresh=False)
13021234
if settings is not None:

0 commit comments

Comments
 (0)