From c76ea31fcbfd55bb0e153e379af40bc2c4a2acf7 Mon Sep 17 00:00:00 2001 From: Misaka_Company Date: Thu, 26 Feb 2026 15:52:54 +0800 Subject: [PATCH] fix: hide Production ID source controls when admin selects full table validation When admin user selects "database_full" mode, the Production ID source selection controls should be hidden since full table validation doesn't need Production IDs. Changed source_frame from local variable to instance attribute to enable proper show/hide functionality. Co-Authored-By: Claude (glm-5) --- gui/material_validation_tab.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/gui/material_validation_tab.py b/gui/material_validation_tab.py index f42f18b..ba41695 100644 --- a/gui/material_validation_tab.py +++ b/gui/material_validation_tab.py @@ -363,13 +363,13 @@ class MaterialValidationTab(ttk.Frame): # Production ID 数据源(仅 Admin) if self.session_manager.is_admin(): - source_frame = ttk.Frame(parent) - source_frame.pack(fill=tk.X, pady=5) + self.source_frame = ttk.Frame(parent) + self.source_frame.pack(fill=tk.X, pady=5) # Production ID 数据源选择 self.production_id_source_var = tk.StringVar(value="shared") ttk.Radiobutton( - source_frame, + self.source_frame, text="使用文件:", variable=self.production_id_source_var, value="file", @@ -377,7 +377,7 @@ class MaterialValidationTab(ttk.Frame): ).pack(side=tk.LEFT) ttk.Radiobutton( - source_frame, + self.source_frame, text="使用数据提取页面的 Production ID:", variable=self.production_id_source_var, value="shared", @@ -542,15 +542,20 @@ class MaterialValidationTab(ttk.Frame): mode = self.source_mode.get() - # 根据模式显示 Production ID 数据源选择(仅 Admin) if mode == "database_full": - # 全表模式:隐藏 Production ID 选择区域 - if hasattr(self, 'source_frame'): + # 全表模式:隐藏所有 Production ID 相关控件 + if hasattr(self, 'source_frame') and self.source_frame: self.source_frame.pack_forget() + if hasattr(self, 'db_filtered_production_id_selector'): + self.db_filtered_production_id_selector.pack_forget() + if hasattr(self, 'shared_ids_info_label'): + self.shared_ids_info_label.pack_forget() elif mode == "database_filtered": - # 过滤模式:显示 Production ID 选择区域 - if hasattr(self, 'source_frame'): + # 过滤模式:显示数据源选择 + if hasattr(self, 'source_frame') and self.source_frame: self.source_frame.pack(fill=tk.X, pady=5) + # 根据 Production ID 数据源选择显示对应控件 + self._on_production_id_source_changed() def _on_production_id_source_changed(self): """Production ID 数据源切换回调(仅 Admin 模式)"""