优化UI加载速度
This commit is contained in:
@@ -163,7 +163,7 @@ def _on_tree_motion(self: "PQAutomationApp", event):
|
||||
|
||||
def create_ai_image_panel(self: "PQAutomationApp"):
|
||||
"""创建 AI 图片对话面板,并注册到面板管理。"""
|
||||
frame = ttk.Frame(self.content_frame)
|
||||
frame = ttk.Frame(self.view_stack)
|
||||
self.ai_image_frame = frame
|
||||
|
||||
# 内部状态
|
||||
@@ -413,9 +413,9 @@ def create_ai_image_panel(self: "PQAutomationApp"):
|
||||
def toggle_ai_image_panel(self: "PQAutomationApp"):
|
||||
"""切换 AI 图片面板显隐。"""
|
||||
self.show_panel("ai_image")
|
||||
_apply_ai_image_list_style(self)
|
||||
self.root.after_idle(lambda: _apply_ai_image_list_style(self))
|
||||
if not getattr(self, "_ai_image_list_loaded", False):
|
||||
_start_new_session(self)
|
||||
self.root.after_idle(lambda: _start_new_session(self))
|
||||
|
||||
|
||||
def _get_app_base_dir(self: "PQAutomationApp") -> str:
|
||||
|
||||
@@ -317,7 +317,7 @@ def _refresh_calman_config_summary(self: "PQAutomationApp") -> None:
|
||||
def create_calman_panel(self: "PQAutomationApp") -> None:
|
||||
"""创建 CALMAN 风格灰阶测试面板,注册到 panel_manager。"""
|
||||
palette = _get_calman_palette()
|
||||
self.calman_frame = ttk.Frame(self.content_frame)
|
||||
self.calman_frame = ttk.Frame(self.view_stack)
|
||||
self.calman_visible = False
|
||||
self.calman_levels = list(DEFAULT_LEVELS_PCT)
|
||||
# level_pct -> dict(pct, x, y, Y, X, Z, cct, gamma, de2000, rgb_r, rgb_g, rgb_b, time)
|
||||
@@ -677,22 +677,45 @@ def create_calman_panel(self: "PQAutomationApp") -> None:
|
||||
|
||||
_apply_calman_tree_style(self)
|
||||
|
||||
right.bind("<Configure>", lambda _e: _adaptive_matrix_columns(self))
|
||||
right.bind("<Configure>", lambda _e: _schedule_adaptive_matrix_columns(self))
|
||||
|
||||
_refresh_metric_table(self)
|
||||
_refresh_calman_config_summary(self)
|
||||
_update_target_strip(self)
|
||||
_update_actual_strip(self)
|
||||
_redraw_calman_charts(self)
|
||||
self.root.after_idle(lambda: _finish_calman_panel_init(self))
|
||||
|
||||
# 注册到统一面板管理(按钮稍后由 main_layout 注入)
|
||||
self.register_panel("calman", self.calman_frame, None, "calman_visible")
|
||||
|
||||
|
||||
def _finish_calman_panel_init(self: "PQAutomationApp") -> None:
|
||||
"""延迟初始化 CALMAN 图表与表格,避免阻塞主窗口首屏。"""
|
||||
_refresh_metric_table(self)
|
||||
_refresh_calman_config_summary(self)
|
||||
_update_target_strip(self)
|
||||
_update_actual_strip(self)
|
||||
_redraw_calman_charts(self)
|
||||
self._calman_panel_initialized = True
|
||||
|
||||
|
||||
def _on_calman_panel_shown(self: "PQAutomationApp") -> None:
|
||||
"""面板切到前台时只做轻量刷新,不重绘 Matplotlib。"""
|
||||
_refresh_calman_config_summary(self)
|
||||
_schedule_adaptive_matrix_columns(self)
|
||||
|
||||
|
||||
def _schedule_adaptive_matrix_columns(self: "PQAutomationApp") -> None:
|
||||
job = getattr(self, "_calman_matrix_col_job", None)
|
||||
if job is not None:
|
||||
try:
|
||||
self.root.after_cancel(job)
|
||||
except Exception:
|
||||
pass
|
||||
self._calman_matrix_col_job = self.root.after_idle(
|
||||
lambda: _adaptive_matrix_columns(self)
|
||||
)
|
||||
|
||||
|
||||
def toggle_calman_panel(self: "PQAutomationApp") -> None:
|
||||
"""切换 CALMAN 灰阶面板显示。"""
|
||||
self.show_panel("calman")
|
||||
_refresh_calman_config_summary(self)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -1374,3 +1397,4 @@ class CalmanPanelMixin:
|
||||
create_calman_panel = create_calman_panel
|
||||
toggle_calman_panel = toggle_calman_panel
|
||||
refresh_calman_theme = refresh_calman_theme
|
||||
_on_calman_panel_shown = _on_calman_panel_shown
|
||||
|
||||
@@ -148,7 +148,7 @@ _GENERATORS = {
|
||||
|
||||
def create_gamma_pattern_panel(self: "PQAutomationApp"):
|
||||
"""创建灰阶 Pattern 配置面板。"""
|
||||
frame = ttk.Frame(self.content_frame)
|
||||
frame = ttk.Frame(self.view_stack)
|
||||
self.gamma_pattern_frame = frame
|
||||
self.gamma_pattern_visible = False
|
||||
|
||||
|
||||
@@ -171,8 +171,32 @@ def create_test_items_content(self: "PQAutomationApp"):
|
||||
},
|
||||
}
|
||||
|
||||
# 根据当前测试类型创建复选框
|
||||
# 预创建各测试类型的复选框,切换时只改显隐与勾选状态,避免重复构建控件。
|
||||
self.test_vars = {}
|
||||
toggle_bootstyle = "success-round-toggle"
|
||||
for type_key, config in self.test_items.items():
|
||||
frame = config["frame"]
|
||||
type_label = ttk.Label(
|
||||
frame,
|
||||
text=self.get_test_type_name(type_key),
|
||||
style="primary.TLabel",
|
||||
)
|
||||
type_label.grid(row=0, column=0, columnspan=2, sticky=tk.W, padx=5, pady=3)
|
||||
config["type_label"] = type_label
|
||||
|
||||
checkbox_vars: dict[str, tk.BooleanVar] = {}
|
||||
for i, (text, var_name) in enumerate(config["items"]):
|
||||
var = tk.BooleanVar(value=False)
|
||||
ttk.Checkbutton(
|
||||
frame,
|
||||
text=text,
|
||||
variable=var,
|
||||
bootstyle=toggle_bootstyle,
|
||||
command=self.update_config_and_tabs,
|
||||
).grid(row=i // 2 + 1, column=i % 2, sticky=tk.W, padx=10, pady=5)
|
||||
checkbox_vars[var_name] = var
|
||||
config["checkbox_vars"] = checkbox_vars
|
||||
|
||||
self.update_test_items()
|
||||
|
||||
# 创建色度参数设置框架
|
||||
@@ -1243,33 +1267,17 @@ def update_test_items(self: "PQAutomationApp"):
|
||||
frame = config["frame"]
|
||||
frame.pack(fill=tk.X, padx=5, pady=5)
|
||||
|
||||
# 添加测试类型标签
|
||||
type_label = ttk.Label(
|
||||
frame,
|
||||
config["type_label"].configure(
|
||||
text=self.get_test_type_name(current_test_type),
|
||||
style="primary.TLabel",
|
||||
)
|
||||
type_label.grid(row=0, column=0, columnspan=2, sticky=tk.W, padx=5, pady=3)
|
||||
|
||||
# 从配置中读取保存的选择状态
|
||||
saved_test_items = self.config.current_test_types[current_test_type].get(
|
||||
"test_items", []
|
||||
)
|
||||
|
||||
# 添加复选框
|
||||
toggle_bootstyle = "success-round-toggle"
|
||||
for i, (text, var_name) in enumerate(config["items"]):
|
||||
is_checked = var_name in saved_test_items
|
||||
var = tk.BooleanVar(value=is_checked)
|
||||
|
||||
for var_name, var in config["checkbox_vars"].items():
|
||||
var.set(var_name in saved_test_items)
|
||||
self.test_vars[f"{current_test_type}_{var_name}"] = var
|
||||
ttk.Checkbutton(
|
||||
frame,
|
||||
text=text,
|
||||
variable=var,
|
||||
bootstyle=toggle_bootstyle,
|
||||
command=self.update_config_and_tabs,
|
||||
).grid(row=i // 2 + 1, column=i % 2, sticky=tk.W, padx=10, pady=5)
|
||||
|
||||
if hasattr(self, "chart_notebook"):
|
||||
self.update_chart_tabs_state()
|
||||
|
||||
@@ -23,7 +23,7 @@ _TEMPLATE_FILE = "pantone_2670_colors.xlsx"
|
||||
|
||||
def create_pantone_baseline_panel(self: "PQAutomationApp"):
|
||||
"""创建 Pantone 认证摸底测试面板。"""
|
||||
frame = ttk.Frame(self.content_frame)
|
||||
frame = ttk.Frame(self.view_stack)
|
||||
self.pantone_baseline_frame = frame
|
||||
self.pantone_baseline_visible = False
|
||||
self.pantone_patterns = []
|
||||
|
||||
@@ -15,7 +15,7 @@ if TYPE_CHECKING:
|
||||
|
||||
def create_log_panel(self: "PQAutomationApp"):
|
||||
"""创建日志面板"""
|
||||
self.log_frame = ttk.Frame(self.content_frame)
|
||||
self.log_frame = ttk.Frame(self.view_stack)
|
||||
self.log_gui = PQLogGUI(self.log_frame)
|
||||
self.log_gui.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)
|
||||
|
||||
@@ -30,7 +30,7 @@ def create_log_panel(self: "PQAutomationApp"):
|
||||
|
||||
def create_local_dimming_panel(self: "PQAutomationApp"):
|
||||
"""创建 Local Dimming 测试面板。"""
|
||||
self.local_dimming_frame = ttk.Frame(self.content_frame)
|
||||
self.local_dimming_frame = ttk.Frame(self.main_view)
|
||||
|
||||
# 主容器
|
||||
main_container = ttk.Frame(self.local_dimming_frame, padding=10)
|
||||
|
||||
Reference in New Issue
Block a user