添加信号格式修改
This commit is contained in:
@@ -137,21 +137,21 @@ def create_signal_format_content(self):
|
||||
sdr_color_space_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_color_space_var,
|
||||
values=["BT.709", "BT.601", "BT.2020"],
|
||||
values=["sRGB", "BT.709", "BT.601", "BT.2020", "DCI-P3"],
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
sdr_color_space_combo.grid(row=0, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# Gamma
|
||||
# Gamma(测试参考值,用于Gamma曲线绘制和色准计算)
|
||||
ttk.Label(self.sdr_signal_frame, text="Gamma:").grid(
|
||||
row=1, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.sdr_gamma_type_var = tk.StringVar(value="2.2")
|
||||
self.sdr_gamma_type_var = tk.StringVar(value=UCDEnum.SignalFormat.GammaType.GAMMA_22)
|
||||
sdr_gamma_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_gamma_type_var,
|
||||
values=["2.2", "2.4", "2.6"],
|
||||
values=UCDEnum.SignalFormat.GammaType.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
@@ -161,11 +161,11 @@ def create_signal_format_content(self):
|
||||
ttk.Label(self.sdr_signal_frame, text="数据范围:").grid(
|
||||
row=2, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.sdr_data_range_var = tk.StringVar(value="Full")
|
||||
self.sdr_data_range_var = tk.StringVar(value=UCDEnum.SignalFormat.DataRange.FULL)
|
||||
sdr_range_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_data_range_var,
|
||||
values=["Full", "Limited"],
|
||||
values=UCDEnum.SignalFormat.DataRange.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
@@ -175,16 +175,50 @@ def create_signal_format_content(self):
|
||||
ttk.Label(self.sdr_signal_frame, text="编码位深:").grid(
|
||||
row=3, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.sdr_bit_depth_var = tk.StringVar(value="8bit")
|
||||
self.sdr_bit_depth_var = tk.StringVar(value=UCDEnum.SignalFormat.BitDepth.BIT_8)
|
||||
sdr_bit_depth_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_bit_depth_var,
|
||||
values=["8bit", "10bit", "12bit"],
|
||||
values=UCDEnum.SignalFormat.BitDepth.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
sdr_bit_depth_combo.grid(row=3, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# 分辨率
|
||||
ttk.Label(self.sdr_signal_frame, text="分辨率:").grid(
|
||||
row=4, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.sdr_timing_var = tk.StringVar(
|
||||
value=self.config.current_test_types.get("sdr_movie", {}).get(
|
||||
"timing", "DMT 1920x1080@60Hz"
|
||||
)
|
||||
)
|
||||
sdr_timing_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_timing_var,
|
||||
values=UCDEnum.TimingInfo.get_formatted_resolution_list(),
|
||||
width=20,
|
||||
state="readonly",
|
||||
)
|
||||
sdr_timing_combo.bind("<<ComboboxSelected>>", self.on_sdr_timing_changed)
|
||||
sdr_timing_combo.grid(row=4, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# 色彩格式
|
||||
ttk.Label(self.sdr_signal_frame, text="色彩格式:").grid(
|
||||
row=5, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.sdr_output_format_var = tk.StringVar(value=UCDEnum.SignalFormat.OutputFormat.RGB)
|
||||
sdr_output_format_combo = ttk.Combobox(
|
||||
self.sdr_signal_frame,
|
||||
textvariable=self.sdr_output_format_var,
|
||||
values=UCDEnum.SignalFormat.OutputFormat.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
sdr_output_format_combo.bind("<<ComboboxSelected>>", self.on_sdr_output_format_changed)
|
||||
sdr_output_format_combo.grid(row=5, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# ==================== HDR信号格式设置 ====================
|
||||
self.hdr_signal_frame = ttk.Frame(self.signal_tabs)
|
||||
# 配置列权重
|
||||
@@ -235,11 +269,11 @@ def create_signal_format_content(self):
|
||||
ttk.Label(self.hdr_signal_frame, text="数据范围:").grid(
|
||||
row=3, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.hdr_data_range_var = tk.StringVar(value="Full")
|
||||
self.hdr_data_range_var = tk.StringVar(value=UCDEnum.SignalFormat.DataRange.FULL)
|
||||
hdr_range_combo = ttk.Combobox(
|
||||
self.hdr_signal_frame,
|
||||
textvariable=self.hdr_data_range_var,
|
||||
values=["Full", "Limited"],
|
||||
values=UCDEnum.SignalFormat.DataRange.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
@@ -249,16 +283,31 @@ def create_signal_format_content(self):
|
||||
ttk.Label(self.hdr_signal_frame, text="编码位深:").grid(
|
||||
row=4, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.hdr_bit_depth_var = tk.StringVar(value="8bit")
|
||||
self.hdr_bit_depth_var = tk.StringVar(value=UCDEnum.SignalFormat.BitDepth.BIT_8)
|
||||
hdr_bit_depth_combo = ttk.Combobox(
|
||||
self.hdr_signal_frame,
|
||||
textvariable=self.hdr_bit_depth_var,
|
||||
values=["8bit", "10bit", "12bit"],
|
||||
values=UCDEnum.SignalFormat.BitDepth.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
hdr_bit_depth_combo.grid(row=4, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# 色彩格式
|
||||
ttk.Label(self.hdr_signal_frame, text="色彩格式:").grid(
|
||||
row=5, column=0, sticky=tk.W, padx=5, pady=2
|
||||
)
|
||||
self.hdr_output_format_var = tk.StringVar(value=UCDEnum.SignalFormat.OutputFormat.RGB)
|
||||
hdr_output_format_combo = ttk.Combobox(
|
||||
self.hdr_signal_frame,
|
||||
textvariable=self.hdr_output_format_var,
|
||||
values=UCDEnum.SignalFormat.OutputFormat.get_list(),
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
hdr_output_format_combo.bind("<<ComboboxSelected>>", self.on_hdr_output_format_changed)
|
||||
hdr_output_format_combo.grid(row=5, column=1, sticky=tk.W, padx=5, pady=2)
|
||||
|
||||
# ==================== 初始化:默认只启用屏模组 Tab ====================
|
||||
self.signal_tabs.select(0) # 选中屏模组
|
||||
self.signal_tabs.tab(1, state="disabled") # 禁用 SDR
|
||||
@@ -271,8 +320,9 @@ def create_connection_content(self):
|
||||
com_frame = ttk.Frame(self.connection_frame)
|
||||
com_frame.pack(fill=tk.X, pady=5)
|
||||
|
||||
# 获取可用的COM端口列表
|
||||
# 获取可用的COM端口列表和UCD设备列表
|
||||
available_ports = self.get_available_com_ports()
|
||||
available_ucd_list = self.get_available_ucd_ports()
|
||||
|
||||
# 使用网格布局,更整齐
|
||||
ttk.Label(com_frame, text="UCD列表:").grid(
|
||||
@@ -282,7 +332,7 @@ def create_connection_content(self):
|
||||
self.ucd_list_combo = ttk.Combobox(
|
||||
com_frame,
|
||||
textvariable=self.ucd_list_var,
|
||||
values=available_ports,
|
||||
values=available_ucd_list,
|
||||
width=10,
|
||||
state="readonly",
|
||||
)
|
||||
@@ -453,6 +503,19 @@ def create_test_type_frame(self):
|
||||
)
|
||||
self.pantone_baseline_btn.pack(fill=tk.X, padx=0, pady=1)
|
||||
|
||||
# 测试版水印标签(版本 x.x.0.0 时显示)
|
||||
from app_version import is_beta_version, APP_VERSION
|
||||
if is_beta_version():
|
||||
beta_lbl = tk.Label(
|
||||
self.sidebar_frame,
|
||||
text=f"[测试版] v{APP_VERSION}",
|
||||
foreground="#ffffff",
|
||||
background="#cc3300",
|
||||
font=("微软雅黑", 8, "bold"),
|
||||
anchor="center",
|
||||
)
|
||||
beta_lbl.pack(fill=tk.X, side=tk.BOTTOM, padx=4, pady=(6, 4))
|
||||
|
||||
# 注册面板按钮
|
||||
if hasattr(self, "panels"):
|
||||
if "log" in self.panels:
|
||||
@@ -569,6 +632,74 @@ def on_screen_module_timing_changed(self, event=None):
|
||||
self.log_gui.log(f"屏模组信号格式更改失败: {str(e)}", level="error")
|
||||
|
||||
|
||||
def on_sdr_timing_changed(self, event=None):
|
||||
"""SDR测试分辨率改变时的回调"""
|
||||
try:
|
||||
selected_timing = self.sdr_timing_var.get()
|
||||
self.log_gui.log(f"SDR测试分辨率已更改为: {selected_timing}", level="info")
|
||||
|
||||
# 直接更新 sdr_movie 的 timing 配置
|
||||
self.config.current_test_types["sdr_movie"]["timing"] = selected_timing
|
||||
|
||||
if self.testing:
|
||||
self.log_gui.log("警告: 测试进行中,分辨率更改将在下次测试时生效", level="error")
|
||||
|
||||
self.save_pq_config()
|
||||
|
||||
except Exception as e:
|
||||
self.log_gui.log(f"SDR测试分辨率更改失败: {str(e)}", level="error")
|
||||
|
||||
|
||||
def on_sdr_output_format_changed(self, event=None):
|
||||
"""SDR 色彩格式改变时的回调"""
|
||||
try:
|
||||
fmt = self.sdr_output_format_var.get()
|
||||
self.log_gui.log(f"SDR色彩格式已更改为: {fmt}", level="info")
|
||||
|
||||
if self.testing:
|
||||
self.log_gui.log("警告: 测试进行中,格式更改将在下次测试时生效", level="error")
|
||||
return
|
||||
|
||||
if getattr(self.ucd, "status", False):
|
||||
ok = self.ucd.apply_signal_format(
|
||||
color_space=self.sdr_color_space_var.get(),
|
||||
data_range=self.sdr_data_range_var.get(),
|
||||
bit_depth=self.sdr_bit_depth_var.get(),
|
||||
color_format=fmt,
|
||||
)
|
||||
if not ok:
|
||||
self.log_gui.log("SDR色彩格式应用到UCD失败", level="error")
|
||||
|
||||
except Exception as e:
|
||||
self.log_gui.log(f"SDR色彩格式更改失败: {str(e)}", level="error")
|
||||
|
||||
|
||||
def on_hdr_output_format_changed(self, event=None):
|
||||
"""HDR 色彩格式改变时的回调"""
|
||||
try:
|
||||
fmt = self.hdr_output_format_var.get()
|
||||
self.log_gui.log(f"HDR色彩格式已更改为: {fmt}", level="info")
|
||||
|
||||
if self.testing:
|
||||
self.log_gui.log("警告: 测试进行中,格式更改将在下次测试时生效", level="error")
|
||||
return
|
||||
|
||||
if getattr(self.ucd, "status", False):
|
||||
ok = self.ucd.apply_signal_format(
|
||||
color_space=self.hdr_color_space_var.get(),
|
||||
data_range=self.hdr_data_range_var.get(),
|
||||
bit_depth=self.hdr_bit_depth_var.get(),
|
||||
max_cll=self.hdr_maxcll_var.get(),
|
||||
max_fall=self.hdr_maxfall_var.get(),
|
||||
color_format=fmt,
|
||||
)
|
||||
if not ok:
|
||||
self.log_gui.log("HDR色彩格式应用到UCD失败", level="error")
|
||||
|
||||
except Exception as e:
|
||||
self.log_gui.log(f"HDR色彩格式更改失败: {str(e)}", level="error")
|
||||
|
||||
|
||||
def update_test_items(self):
|
||||
"""根据当前测试类型更新测试项目复选框"""
|
||||
# 先隐藏所有测试项目框架
|
||||
|
||||
Reference in New Issue
Block a user