fix: Step 7 路由 + 发送端字符串对齐(消除 KeyError)+ 配套防御性补强
核心修复 - panel_registry: step7_index class_ref 换绑 Step7View(最小侵入式对位,保持 step_id 保护全项目 18 处下游引用) - step7_view._on_run_single_clicked: 'step7' → 'step7_index'(wrapped_config key + step_name 同步对齐,消除 PipelineScheduler 抛 KeyError "未注册的步骤: 'step7'") 配套防御性补强 - pipeline_executor.run_single_step_handler: 后台 is_running 时改 QMessageBox 警告 + LogMessage,防多次点击死锁 - worker_thread.run_single_step: 兼容嵌套/扁平 config 格式,嵌套子 dict 为空时回退扁平读取 - 公式 ListWidget layout 修复:setUniformItemSizes + stretch=1 + update(),消除 step7_view 加载后坍塌/不刷新
This commit is contained in:
@ -129,9 +129,10 @@ class Step7View(BaseView):
|
||||
self.formula_list.setSelectionMode(QListWidget.MultiSelection)
|
||||
self.formula_list.setMinimumHeight(300)
|
||||
self.formula_list.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
||||
self.formula_list.setUniformItemSizes(True)
|
||||
# view 层不需要 itemChanged 副作用;service 接管时再启用
|
||||
self.formula_list.blockSignals(True)
|
||||
formula_outer_layout.addWidget(self.formula_list)
|
||||
formula_outer_layout.addWidget(self.formula_list, stretch=1)
|
||||
|
||||
self.formula_group.setLayout(formula_outer_layout)
|
||||
layout.addWidget(self.formula_group)
|
||||
@ -233,6 +234,8 @@ class Step7View(BaseView):
|
||||
self.index_checkboxes[name] = item
|
||||
self.formula_list.blockSignals(False)
|
||||
self.formula_list.adjustSize()
|
||||
self.formula_list.updateGeometry()
|
||||
self.update()
|
||||
|
||||
for btn in (self.select_all_btn, self.deselect_all_btn,
|
||||
self.select_ratio_btn, self.select_conc_btn, self.refresh_button):
|
||||
@ -319,6 +322,14 @@ class Step7View(BaseView):
|
||||
# 执行入口
|
||||
# ------------------------------------------------------------------
|
||||
def _on_run_single_clicked(self):
|
||||
from src.gui.core.event_bus import global_event_bus
|
||||
config = self.get_config()
|
||||
global_event_bus.publish('RequestRunSingleStep', {'step_name': 'step7', 'config': config})
|
||||
import traceback
|
||||
print("==== Step 7 计算按钮物理按下 ====", flush=True)
|
||||
try:
|
||||
from src.gui.core.event_bus import global_event_bus
|
||||
config = self.get_config()
|
||||
wrapped_config = {'step7_index': config}
|
||||
global_event_bus.publish('RequestRunSingleStep', {'step_name': 'step7_index', 'config': wrapped_config})
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
from PyQt5.QtWidgets import QMessageBox
|
||||
QMessageBox.critical(self, "Step7 发射失败", f"收集配置或发送请求时异常:\n\n{e}")
|
||||
|
||||
Reference in New Issue
Block a user