界面优化

This commit is contained in:
DXC
2026-05-07 14:46:59 +08:00
parent c12b9d8d8a
commit a645c64987
2 changed files with 84 additions and 0 deletions

View File

@ -1125,6 +1125,19 @@ class VisualizationPanel(QWidget):
dir_group.setLayout(dir_layout)
left_layout.addWidget(dir_group)
# 图像目录选择(优先指向预测结果目录)
img_dir_group = QGroupBox("图像目录")
img_dir_layout = QHBoxLayout()
self.img_dir_edit = QLineEdit()
self.img_dir_edit.setPlaceholderText("预测结果目录(自动填充)…")
self.img_dir_edit.setReadOnly(True)
img_dir_browse_btn = QPushButton("浏览")
img_dir_browse_btn.clicked.connect(self.browse_img_dir)
img_dir_layout.addWidget(self.img_dir_edit, 1)
img_dir_layout.addWidget(img_dir_browse_btn)
img_dir_group.setLayout(img_dir_layout)
left_layout.addWidget(img_dir_group)
# 图像目录树
tree_group = QGroupBox("图像目录")
tree_layout = QVBoxLayout()
@ -1210,6 +1223,73 @@ class VisualizationPanel(QWidget):
self.work_dir_edit.setText(dir_path)
self.scan_work_directory()
def browse_img_dir(self):
"""手动浏览图像目录"""
dir_path = QFileDialog.getExistingDirectory(self, "选择图像目录")
if dir_path:
self.img_dir_edit.setText(dir_path)
self.image_tree.scan_directory(dir_path)
self._load_first_image_from_tree()
def update_from_config(self, work_dir=None, pipeline=None):
"""从全局配置自动推断并填入图像目录,然后自动加载目录内容。
推断优先级:
1. {work_dir}/11_12_13_predictions/Machine_Learning_Prediction机器学习预测
2. {work_dir}/11_12_13_predictions/Non_Empirical_Prediction普通回归预测
3. {work_dir}/11_12_13_predictions/Custom_Regression_Prediction自定义回归预测
4. {work_dir}/14_visualization可视化目录
5. {work_dir}(工作目录根)
"""
if work_dir:
self.work_dir = work_dir
self.work_dir_edit.setText(str(work_dir))
elif not self.work_dir:
return
work_path = Path(self.work_dir)
pred_dir = work_path / "11_12_13_predictions"
# 按优先级寻找存在的目录
candidates = [
pred_dir / "Machine_Learning_Prediction",
pred_dir / "Non_Empirical_Prediction",
pred_dir / "Custom_Regression_Prediction",
work_path / "14_visualization",
work_path,
]
detected_dir = None
for candidate in candidates:
if candidate.exists() and candidate.is_dir():
detected_dir = candidate
break
if detected_dir:
detected_str = str(detected_dir)
self.img_dir_edit.setText(detected_str)
self.image_tree.scan_directory(detected_str)
else:
# 无预测目录时扫描整个工作目录
self.image_tree.scan_directory(self.work_dir)
# 自动触发加载第一张图像
self._load_first_image_from_tree()
def _load_first_image_from_tree(self):
"""从目录树中加载第一张图像到右侧查看器"""
tree = self.image_tree
if tree is None:
return
for category_item in tree.category_items.values():
for i in range(category_item.childCount()):
child = category_item.child(i)
data = child.data(0, Qt.UserRole)
if data and data.get("type") == "image":
img_path = data.get("path")
if img_path and Path(img_path).exists():
self.image_viewer.load_image(img_path)
return
def scan_work_directory(self):
"""扫描工作目录中的图像文件"""
if not self.work_dir:

View File

@ -2126,6 +2126,10 @@ class WaterQualityGUI(QMainWindow):
elif index == 9:
self.step7_panel.update_from_config(work_dir=self.work_dir, pipeline=self.pipeline)
# 可视化分析面板切换时自动推断图像目录并加载目录树
elif index == 14:
self.viz_panel.update_from_config(work_dir=self.work_dir, pipeline=self.pipeline)
def apply_stylesheet(self):
"""应用样式表 - 应用现代化设计风格"""
# 应用主样式表