Skip to content

Commit 988ad00

Browse files
committed
修复 名单设置界面逻辑,解决 班级名称和奖池名称同时为空 及 未设置班级仍可点击其他按钮 的问题
1 parent 9c5367c commit 988ad00

6 files changed

Lines changed: 77 additions & 67 deletions

File tree

CHANGELOG/v1.3.2-alpha.5/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ v2.0 - Koharu(小鸟游星野) Alpha 5
2424
- 修复 **闪抽历史记录**,解决无法记录历史记录&临时记录的问题
2525
- 修复 **浮窗周期性置顶**,解决功能未生效的问题
2626
- 修复 **重复模式剩余人数**,解决直接显示结果时剩余人数不更新的问题
27+
- 修复 **名单设置界面逻辑**,解决 **班级名称和奖池名称同时为空****未设置班级仍可点击其他按钮** 的问题
2728

2829
## 🔧 其它变更
2930

app/Language/modules/lottery_list.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
"error_title": {"name": "错误", "description": "错误消息标题"},
1717
"success_title": {"name": "成功", "description": "成功消息标题"},
1818
"info_title": {"name": "提示", "description": "信息消息标题"},
19-
"no_prize_names_error": {
20-
"name": "请至少输入一个奖池名称",
21-
"description": "未输入奖池名称时的错误提示",
22-
},
2319
"invalid_names_error": {
2420
"name": "以下奖池名称包含非法字符或为保留字: {names}",
2521
"description": "奖池名称验证失败时的错误提示",

app/Language/modules/roll_call_list.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@
1616
"error_title": {"name": "错误", "description": "错误消息标题"},
1717
"success_title": {"name": "成功", "description": "成功消息标题"},
1818
"info_title": {"name": "提示", "description": "信息消息标题"},
19-
"no_class_names_error": {
20-
"name": "请至少输入一个班级名称",
21-
"description": "未输入班级名称时的错误提示",
22-
},
2319
"invalid_names_error": {
2420
"name": "以下班级名称包含非法字符或为保留字: {names}",
2521
"description": "班级名称验证失败时的错误提示",

app/view/another_window/prize/set_pool_name.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,17 +185,6 @@ def __save_pool_names(self):
185185
try:
186186
# 获取输入的奖池名称
187187
pool_names_text = self.text_edit.toPlainText().strip()
188-
if not pool_names_text:
189-
# 显示错误消息
190-
config = NotificationConfig(
191-
title=get_content_name_async("set_prize_name", "error_title"),
192-
content=get_content_name_async(
193-
"set_prize_name", "no_prize_names_error"
194-
),
195-
duration=3000,
196-
)
197-
show_notification(NotificationType.ERROR, config, parent=self)
198-
return
199188

200189
# 分割奖池名称
201190
pool_names = [

app/view/another_window/student/set_class_name.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -185,17 +185,6 @@ def __save_class_names(self):
185185
try:
186186
# 获取输入的班级名称
187187
class_names_text = self.text_edit.toPlainText().strip()
188-
if not class_names_text:
189-
# 显示错误消息
190-
config = NotificationConfig(
191-
title=get_content_name_async("set_class_name", "error_title"),
192-
content=get_content_name_async(
193-
"set_class_name", "no_class_names_error"
194-
),
195-
duration=3000,
196-
)
197-
show_notification(NotificationType.ERROR, config, parent=self)
198-
return
199188

200189
# 分割班级名称
201190
class_names = [

app/view/settings/list_management/list_management.py

Lines changed: 76 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -55,23 +55,6 @@ def __init__(self, parent=None):
5555

5656
# 选择班级下拉框
5757
self.class_name_combo = ComboBox()
58-
self.refresh_class_list() # 初始化班级列表
59-
if not get_class_name_list():
60-
self.class_name_combo.setCurrentIndex(-1)
61-
self.class_name_combo.setPlaceholderText(
62-
get_content_name_async("roll_call_list", "select_class_name")
63-
)
64-
else:
65-
self.class_name_combo.setCurrentText(
66-
readme_settings_async("roll_call_list", "select_class_name")
67-
)
68-
self.class_name_combo.currentIndexChanged.connect(
69-
lambda: update_settings(
70-
"roll_call_list",
71-
"select_class_name",
72-
self.class_name_combo.currentText(),
73-
)
74-
)
7558

7659
# 导入学生名单按钮
7760
self.import_student_button = PushButton(
@@ -147,9 +130,31 @@ def __init__(self, parent=None):
147130
self.export_student_button,
148131
)
149132

133+
# 初始化班级列表(在所有按钮都创建后)
134+
self.refresh_class_list()
135+
if not get_class_name_list():
136+
self.class_name_combo.setCurrentIndex(-1)
137+
self.class_name_combo.setPlaceholderText(
138+
get_content_name_async("roll_call_list", "select_class_name")
139+
)
140+
else:
141+
self.class_name_combo.setCurrentText(
142+
readme_settings_async("roll_call_list", "select_class_name")
143+
)
144+
self.class_name_combo.currentIndexChanged.connect(
145+
lambda: update_settings(
146+
"roll_call_list",
147+
"select_class_name",
148+
self.class_name_combo.currentText(),
149+
)
150+
)
151+
150152
# 设置文件系统监视器
151153
self.setup_file_watcher()
152154

155+
# 初始化按钮状态
156+
self.update_button_states()
157+
153158
# 班级名称设置
154159
def set_class_name(self):
155160
create_set_class_name_window()
@@ -376,6 +381,18 @@ def on_directory_changed(self, path):
376381
# 延迟刷新,避免文件操作未完成
377382
QTimer.singleShot(500, self.refresh_class_list)
378383

384+
def update_button_states(self):
385+
"""根据班级列表状态更新按钮禁用状态"""
386+
class_list = get_class_name_list()
387+
has_class = len(class_list) > 0
388+
389+
# 禁用/启用相关按钮
390+
self.import_student_button.setEnabled(has_class)
391+
self.name_setting_button.setEnabled(has_class)
392+
self.gender_setting_button.setEnabled(has_class)
393+
self.group_setting_button.setEnabled(has_class)
394+
self.export_student_button.setEnabled(has_class)
395+
379396
def refresh_class_list(self):
380397
"""刷新班级下拉框列表"""
381398
# 保存当前选中的班级名称
@@ -398,6 +415,9 @@ def refresh_class_list(self):
398415
get_content_name_async("roll_call_list", "select_class_name")
399416
)
400417

418+
# 更新按钮状态
419+
self.update_button_states()
420+
401421
# logger.debug(f"班级列表已刷新,共 {len(class_list)} 个班级")
402422

403423

@@ -415,26 +435,6 @@ def __init__(self, parent=None):
415435

416436
# 选择奖池下拉框
417437
self.pool_name_combo = ComboBox()
418-
self.refresh_pool_list() # 初始化奖池列表
419-
saved_pool = readme_settings_async("lottery_list", "select_pool_name")
420-
try:
421-
if isinstance(saved_pool, int):
422-
if 0 <= saved_pool < self.pool_name_combo.count():
423-
self.pool_name_combo.setCurrentIndex(saved_pool)
424-
elif isinstance(saved_pool, str) and saved_pool:
425-
self.pool_name_combo.setCurrentText(saved_pool)
426-
except Exception:
427-
pass
428-
if not get_pool_name_list():
429-
self.pool_name_combo.setCurrentIndex(-1)
430-
self.pool_name_combo.setPlaceholderText(
431-
get_content_name_async("lottery_list", "select_pool_name")
432-
)
433-
self.pool_name_combo.currentIndexChanged.connect(
434-
lambda: update_settings(
435-
"lottery_list", "select_pool_name", self.pool_name_combo.currentText()
436-
)
437-
)
438438

439439
# 导入奖品名单按钮
440440
self.import_prize_button = PushButton(
@@ -500,9 +500,34 @@ def __init__(self, parent=None):
500500
self.export_prize_button,
501501
)
502502

503+
# 初始化奖池列表(在所有按钮都创建后)
504+
self.refresh_pool_list()
505+
saved_pool = readme_settings_async("lottery_list", "select_pool_name")
506+
try:
507+
if isinstance(saved_pool, int):
508+
if 0 <= saved_pool < self.pool_name_combo.count():
509+
self.pool_name_combo.setCurrentIndex(saved_pool)
510+
elif isinstance(saved_pool, str) and saved_pool:
511+
self.pool_name_combo.setCurrentText(saved_pool)
512+
except Exception:
513+
pass
514+
if not get_pool_name_list():
515+
self.pool_name_combo.setCurrentIndex(-1)
516+
self.pool_name_combo.setPlaceholderText(
517+
get_content_name_async("lottery_list", "select_pool_name")
518+
)
519+
self.pool_name_combo.currentIndexChanged.connect(
520+
lambda: update_settings(
521+
"lottery_list", "select_pool_name", self.pool_name_combo.currentText()
522+
)
523+
)
524+
503525
# 设置文件系统监视器
504526
self.setup_file_watcher()
505527

528+
# 初始化按钮状态
529+
self.update_button_states()
530+
506531
# 奖池名称设置
507532
def set_pool_name(self):
508533
create_set_pool_name_window()
@@ -715,6 +740,17 @@ def on_directory_changed(self, path):
715740
# 延迟刷新,避免文件操作未完成导致的错误
716741
QTimer.singleShot(500, self.refresh_pool_list)
717742

743+
def update_button_states(self):
744+
"""根据奖池列表状态更新按钮禁用状态"""
745+
pool_list = get_pool_name_list()
746+
has_pool = len(pool_list) > 0
747+
748+
# 禁用/启用相关按钮
749+
self.import_prize_button.setEnabled(has_pool)
750+
self.prize_setting_button.setEnabled(has_pool)
751+
self.prize_weight_setting_button.setEnabled(has_pool)
752+
self.export_prize_button.setEnabled(has_pool)
753+
718754
def refresh_pool_list(self):
719755
"""刷新奖池下拉框列表"""
720756
# 保存当前选中的奖池名称
@@ -737,4 +773,7 @@ def refresh_pool_list(self):
737773
get_content_name_async("lottery_list", "select_pool_name")
738774
)
739775

776+
# 更新按钮状态
777+
self.update_button_states()
778+
740779
# logger.debug(f"奖池列表已刷新,共 {len(pool_list)} 个奖池")

0 commit comments

Comments
 (0)