From 14ea72a4e7276b6576b453ea3142fbc9d589c7a7 Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 26 Jun 2026 17:13:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A5=E9=AA=A4=E4=B9=9D=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gui/panels/step9_ml_predict_panel.py | 55 ++++++++++++++++++------ 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/src/gui/panels/step9_ml_predict_panel.py b/src/gui/panels/step9_ml_predict_panel.py index c76a5b9..db3fae0 100644 --- a/src/gui/panels/step9_ml_predict_panel.py +++ b/src/gui/panels/step9_ml_predict_panel.py @@ -150,7 +150,20 @@ class Step9MlPredictPanel(QWidget): params_layout = QFormLayout() self.metric = QComboBox() - self.metric.addItems(['test_r2', 'test_rmse', 'test_mae']) + # 使用 addItem("显示的中文", "背后传递的真实英文参数") + self.metric.addItem("R² (决定系数)", "test_r2") + self.metric.addItem("RMSE (均方根误差)", "test_rmse") + self.metric.addItem("MAE (平均绝对误差)", "test_mae") + + # 顺手给下拉框加一点现代样式,防止文字拥挤 + self.metric.setStyleSheet(""" + QComboBox { + padding: 4px 8px; + border: 1px solid #C0C0C0; + border-radius: 4px; + min-height: 24px; + } + """) params_layout.addRow("模型选择指标:", self.metric) self.prediction_column = QLineEdit() @@ -160,23 +173,37 @@ class Step9MlPredictPanel(QWidget): params_group.setLayout(params_layout) layout.addWidget(params_group) - # 输出路径 + # ========================================== + # 卡片 4:输出与执行 + # ========================================== + output_group = QGroupBox("🚀 输出与执行") + output_layout = QVBoxLayout() + output_layout.setSpacing(16) + output_layout.setContentsMargins(20, 24, 20, 20) + + # 输出文件路径 self.output_file = FileSelectWidget( "输出路径:", "CSV Files (*.csv);;All Files (*.*)" ) - layout.addWidget(self.output_file) + output_layout.addWidget(self.output_file) - # 启用步骤 - self.enable_checkbox = QCheckBox("启用此步骤") - self.enable_checkbox.setChecked(True) - layout.addWidget(self.enable_checkbox) + # 完美对齐的底部按钮栏(已彻底移除多余的启用复选框) + action_layout = QHBoxLayout() + action_layout.addStretch() - # 独立运行按钮 - self.run_btn = QPushButton("独立运行此步骤") - self.run_btn.setStyleSheet(ModernStylesheet.get_button_stylesheet('success')) + self.run_btn = QPushButton("独立运行步骤") + # 统一使用 primary 蓝色 + self.run_btn.setStyleSheet(ModernStylesheet.get_button_stylesheet('primary')) + self.run_btn.setMinimumWidth(140) self.run_btn.clicked.connect(self._on_run_single_clicked) - layout.addWidget(self.run_btn) + action_layout.addWidget(self.run_btn) + + output_layout.addLayout(action_layout) + output_group.setLayout(output_layout) + + # 将打包好的输出卡片添加到主 layout 中 + layout.addWidget(output_group) layout.addStretch() self.setLayout(layout) @@ -353,7 +380,8 @@ class Step9MlPredictPanel(QWidget): def get_config(self): """获取配置""" config = { - 'metric': self.metric.currentText(), + # 改用 currentData() 获取背后绑定的 'test_r2' 等英文参数,而不是中文文本 + 'metric': self.metric.currentData(), 'prediction_column': self.prediction_column.text(), } sampling_csv_path = self.sampling_csv_file.get_path() @@ -370,7 +398,8 @@ class Step9MlPredictPanel(QWidget): def set_config(self, config): """设置配置""" if 'metric' in config: - idx = self.metric.findText(config['metric']) + # 改用 findData 去匹配配置里的英文参数,而不是匹配中文 + idx = self.metric.findData(config['metric']) if idx >= 0: self.metric.setCurrentIndex(idx) if 'prediction_column' in config: