优化日志显示

This commit is contained in:
xinzhu.yin
2026-04-21 15:31:48 +08:00
parent 6cc3e55ebb
commit e27312d0a3
22 changed files with 684 additions and 553 deletions

View File

@@ -1,4 +1,4 @@
"""
"""
PQ 单步调试面板
支持屏模组、SDR、HDR 三种测试类型的单步调试功能
"""
@@ -34,7 +34,7 @@ class PQDebugPanel:
# 原始测试数据(用于对比)
self.original_data = {}
# ==================== 创建主容器并自动 pack ====================
# ==================== 创建主容器并自动 pack ====================
self.main_container = ttk.Frame(parent)
self.main_container.pack(fill=tk.BOTH, expand=True)
@@ -600,13 +600,13 @@ class PQDebugPanel:
if test_type == "screen_module":
self.screen_frame.pack(fill=tk.BOTH, expand=True)
self.app.log_gui.log("显示屏模组调试面板")
self.app.log_gui.log("显示屏模组调试面板", level="success")
elif test_type == "sdr_movie":
self.sdr_frame.pack(fill=tk.BOTH, expand=True)
self.app.log_gui.log("显示 SDR 调试面板")
self.app.log_gui.log("显示 SDR 调试面板", level="success")
elif test_type == "hdr_movie":
self.hdr_frame.pack(fill=tk.BOTH, expand=True)
self.app.log_gui.log("显示 HDR 调试面板")
self.app.log_gui.log("显示 HDR 调试面板", level="success")
# ==================== 启用/禁用控制 ====================
@@ -631,39 +631,39 @@ class PQDebugPanel:
if test_item == "gamma":
self.screen_gray_combo.config(state="readonly")
self.screen_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("屏模组 Gamma 单步调试已启用")
self.app.log_gui.log("屏模组 Gamma 单步调试已启用", level="success")
elif test_item == "rgb":
self.screen_rgb_combo.config(state="readonly")
self.screen_rgb_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("屏模组 RGB 单步调试已启用")
self.app.log_gui.log("屏模组 RGB 单步调试已启用", level="success")
elif test_type == "sdr_movie":
if test_item == "gamma":
self.sdr_gray_combo.config(state="readonly")
self.sdr_gamma_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("SDR Gamma 单步调试已启用")
self.app.log_gui.log("SDR Gamma 单步调试已启用", level="success")
elif test_item == "accuracy":
self.sdr_color_combo.config(state="readonly")
self.sdr_accuracy_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("SDR 色准单步调试已启用")
self.app.log_gui.log("SDR 色准单步调试已启用", level="success")
elif test_item == "rgb":
self.sdr_rgb_combo.config(state="readonly")
self.sdr_rgb_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("SDR RGB 单步调试已启用")
self.app.log_gui.log("SDR RGB 单步调试已启用", level="success")
elif test_type == "hdr_movie":
if test_item == "eotf":
self.hdr_gray_combo.config(state="readonly")
self.hdr_eotf_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("HDR EOTF 单步调试已启用")
self.app.log_gui.log("HDR EOTF 单步调试已启用", level="success")
elif test_item == "accuracy":
self.hdr_color_combo.config(state="readonly")
self.hdr_accuracy_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("HDR 色准单步调试已启用")
self.app.log_gui.log("HDR 色准单步调试已启用", level="success")
elif test_item == "rgb":
self.hdr_rgb_combo.config(state="readonly")
self.hdr_rgb_test_btn.config(state=tk.NORMAL)
self.app.log_gui.log("HDR RGB 单步调试已启用")
self.app.log_gui.log("HDR RGB 单步调试已启用", level="success")
def disable_all_debug(self):
"""禁用所有单步调试(新测试开始时调用)"""
@@ -759,11 +759,11 @@ class PQDebugPanel:
def _run_single_step_thread(self, test_type, test_item, selected):
"""单步测试线程"""
try:
self.app.log_gui.log("=" * 50)
self.app.log_gui.log("=" * 50, level="info")
self.app.log_gui.log(
f"开始单步调试: {test_type} - {test_item} - {selected}"
)
self.app.log_gui.log("=" * 50)
, level="info")
self.app.log_gui.log("=" * 50, level="info")
# 禁用按钮
self._disable_test_button(test_type, test_item)
@@ -796,9 +796,9 @@ class PQDebugPanel:
x, y, lv, X, Y, Z = self.app.ca.readAllDisplay()
self.app.log_gui.log(
f"测量完成: x={x:.4f}, y={y:.4f}, lv={lv:.2f}, "
f"测量完成: x={x:.4f}, y={y:.4f}, lv={lv:.2f}, "
f"X={X:.4f}, Y={Y:.4f}, Z={Z:.4f}"
)
, level="success")
# 对比数据
self._compare_and_display(
@@ -809,10 +809,10 @@ class PQDebugPanel:
self._enable_test_button(test_type, test_item)
except Exception as e:
self.app.log_gui.log(f" 单步测试失败: {str(e)}")
self.app.log_gui.log(f"[Error] 单步测试失败: {str(e)}", level="error")
import traceback
self.app.log_gui.log(traceback.format_exc())
self.app.log_gui.log(traceback.format_exc(), level="error")
self._enable_test_button(test_type, test_item)
def _setup_signal_format(self, test_type):
@@ -842,7 +842,7 @@ class PQDebugPanel:
# 获取原始数据
key = f"{test_type}_{test_item}"
if key not in self.original_data:
self.app.log_gui.log("⚠️ 未找到原始测试数据")
self.app.log_gui.log("未找到原始测试数据", level="error")
return
original_data_list = self.original_data[key]
@@ -856,12 +856,12 @@ class PQDebugPanel:
index = self.get_rgb_index(selected)
if index >= len(original_data_list):
self.app.log_gui.log(f"⚠️ 索引超出范围: {index}")
self.app.log_gui.log(f"索引超出范围: {index}", level="error")
return
original_data = original_data_list[index]
# ==================== 构建对比数据 ====================
# ==================== 构建对比数据 ====================
comparison = {}
if test_item == "gamma":
@@ -1140,57 +1140,57 @@ class PQDebugPanel:
def _get_delta_e_from_results(self, test_type, color_name):
"""从原始测试结果中读取 ΔE 值"""
try:
self.app.log_gui.log(f"[读取 ΔE] 开始:")
self.app.log_gui.log(f" test_type = {test_type}")
self.app.log_gui.log(f" color_name = {color_name}")
self.app.log_gui.log(f"[读取 ΔE] 开始:", level="info")
self.app.log_gui.log(f" test_type = {test_type}", level="info")
self.app.log_gui.log(f" color_name = {color_name}", level="info")
# 正确的访问方式:通过 test_items
# 正确的访问方式:通过 test_items
if "accuracy" not in self.app.results.test_items:
self.app.log_gui.log(" 未找到 accuracy 测试项")
self.app.log_gui.log("[Error] 未找到 accuracy 测试项", level="error")
return 0.0
test_item = self.app.results.test_items["accuracy"]
accuracy_result = test_item.final_result
self.app.log_gui.log(f" accuracy_result = {accuracy_result is not None}")
self.app.log_gui.log(f" accuracy_result = {accuracy_result is not None}", level="info")
if not accuracy_result:
self.app.log_gui.log(" accuracy_result 为空")
self.app.log_gui.log("[Error] accuracy_result 为空", level="error")
return 0.0
# 获取色块名称列表和 ΔE 值列表
color_patches = accuracy_result.get("color_patches", [])
delta_e_values = accuracy_result.get("delta_e_values", [])
self.app.log_gui.log(f" color_patches 数量: {len(color_patches)}")
self.app.log_gui.log(f" delta_e_values 数量: {len(delta_e_values)}")
self.app.log_gui.log(f" color_patches 数量: {len(color_patches)}", level="info")
self.app.log_gui.log(f" delta_e_values 数量: {len(delta_e_values)}", level="info")
if color_patches:
self.app.log_gui.log(f" 前3个色块: {color_patches[:3]}")
self.app.log_gui.log(f" 前3个色块: {color_patches[:3]}", level="info")
if delta_e_values:
self.app.log_gui.log(f" 前3个ΔE: {delta_e_values[:3]}")
self.app.log_gui.log(f" 前3个ΔE: {delta_e_values[:3]}", level="info")
# 查找对应色块的索引
try:
index = color_patches.index(color_name)
delta_e = delta_e_values[index]
self.app.log_gui.log(
f" 找到 {color_name}: index={index}, ΔE={delta_e:.2f}"
)
f" 找到 {color_name}: index={index}, ΔE={delta_e:.2f}"
, level="success")
return delta_e
except ValueError:
self.app.log_gui.log(f" 未找到色块 '{color_name}'")
self.app.log_gui.log(f" 可用色块: {color_patches}")
self.app.log_gui.log(f"[Error] 未找到色块 '{color_name}'", level="error")
self.app.log_gui.log(f" 可用色块: {color_patches}", level="info")
return 0.0
except IndexError:
self.app.log_gui.log(f" 索引超出范围: {index}/{len(delta_e_values)}")
self.app.log_gui.log(f"[Error] 索引超出范围: {index}/{len(delta_e_values)}", level="error")
return 0.0
except Exception as e:
self.app.log_gui.log(f"⚠️ 读取 ΔE 失败: {str(e)}")
self.app.log_gui.log(f"读取 ΔE 失败: {str(e)}", level="error")
import traceback
self.app.log_gui.log(traceback.format_exc())
self.app.log_gui.log(traceback.format_exc(), level="error")
return 0.0
def _calculate_delta_e_for_color(
@@ -1215,5 +1215,5 @@ class PQDebugPanel:
return delta_e
except Exception as e:
self.app.log_gui.log(f"⚠️ 计算 ΔE 失败: {str(e)}")
self.app.log_gui.log(f"计算 ΔE 失败: {str(e)}", level="error")
return 0.0