多台控制
This commit is contained in:
@@ -14,6 +14,7 @@ class ConfigGUI:
|
||||
self.root.minsize(900, 600) # 设置最小尺寸
|
||||
|
||||
self.selected_index = 0
|
||||
self.preview_thread = None # 添加预览线程引用
|
||||
self.setup_ui()
|
||||
self.load_current_config()
|
||||
|
||||
@@ -96,6 +97,24 @@ class ConfigGUI:
|
||||
self.create_entry(preview_frame, "preview_height", "预览高度:", prefix="display")
|
||||
self.create_entry(preview_frame, "preview_columns", "预览列数:", prefix="display")
|
||||
self.create_entry(preview_frame, "preview_rows", "预览行数:", prefix="display")
|
||||
|
||||
# 多窗口预览开关
|
||||
multi_row = ttk.Frame(preview_frame)
|
||||
multi_row.pack(fill=tk.X, pady=3)
|
||||
ttk.Label(multi_row, text="多窗口预览:", width=15).pack(side=tk.LEFT)
|
||||
self.preview_multi_window_var = tk.BooleanVar(value=False)
|
||||
multi_cb = ttk.Checkbutton(multi_row, variable=self.preview_multi_window_var)
|
||||
multi_cb.pack(side=tk.LEFT, padx=5)
|
||||
self.config_vars["display_preview_multi_window"] = self.preview_multi_window_var
|
||||
|
||||
# 预览全部配置组开关
|
||||
all_row = ttk.Frame(preview_frame)
|
||||
all_row.pack(fill=tk.X, pady=3)
|
||||
ttk.Label(all_row, text="预览全部配置组:", width=15).pack(side=tk.LEFT)
|
||||
self.preview_use_all_groups_var = tk.BooleanVar(value=True)
|
||||
all_cb = ttk.Checkbutton(all_row, variable=self.preview_use_all_groups_var)
|
||||
all_cb.pack(side=tk.LEFT, padx=5)
|
||||
self.config_vars["display_preview_use_all_groups"] = self.preview_use_all_groups_var
|
||||
|
||||
# 保存按钮
|
||||
save_frame = ttk.Frame(right_frame)
|
||||
@@ -145,6 +164,12 @@ class ConfigGUI:
|
||||
for key in ['preview_width', 'preview_height', 'preview_columns', 'preview_rows']:
|
||||
if key in display:
|
||||
self.config_vars[f"display_{key}"].set(str(display[key]))
|
||||
# 多窗口预览
|
||||
if 'preview_multi_window' in display:
|
||||
self.preview_multi_window_var.set(bool(display['preview_multi_window']))
|
||||
# 预览全部配置组
|
||||
if 'preview_use_all_groups' in display:
|
||||
self.preview_use_all_groups_var.set(bool(display['preview_use_all_groups']))
|
||||
# 初次自动扫描一次采集卡和串口
|
||||
try:
|
||||
self.scan_cameras()
|
||||
@@ -384,6 +409,10 @@ class ConfigGUI:
|
||||
display[key] = int(var.get())
|
||||
except:
|
||||
pass
|
||||
# 保存多窗口预览布尔值
|
||||
display['preview_multi_window'] = bool(self.preview_multi_window_var.get())
|
||||
# 保存预览全部配置组布尔值
|
||||
display['preview_use_all_groups'] = bool(self.preview_use_all_groups_var.get())
|
||||
config_manager.config['display'] = display
|
||||
|
||||
# 保存到文件
|
||||
@@ -397,20 +426,13 @@ class ConfigGUI:
|
||||
return False
|
||||
|
||||
def start_preview(self):
|
||||
"""启动预览窗口"""
|
||||
# 保存配置(不显示消息框,静默保存)
|
||||
"""启动预览窗口(主线程,弹窗模式)"""
|
||||
if not self.save_config_silent():
|
||||
messagebox.showerror("错误", "配置保存失败,无法启动预览")
|
||||
return
|
||||
|
||||
# 重新加载配置(从文件读取最新配置)
|
||||
config_manager.load_config()
|
||||
|
||||
# 启动预览窗口
|
||||
from preview import PreviewWindow
|
||||
preview_thread = threading.Thread(target=lambda: PreviewWindow().run())
|
||||
preview_thread.daemon = True
|
||||
preview_thread.start()
|
||||
PreviewWindow().run(self.root) # 以主窗口为父Toplevel弹出独立预览窗
|
||||
|
||||
def save_config_silent(self):
|
||||
"""静默保存配置(不显示消息框)"""
|
||||
@@ -462,6 +484,10 @@ class ConfigGUI:
|
||||
display[key] = int(var.get())
|
||||
except:
|
||||
pass
|
||||
# 保存多窗口预览布尔值(静默)
|
||||
display['preview_multi_window'] = bool(self.preview_multi_window_var.get())
|
||||
# 保存预览全部配置组布尔值(静默)
|
||||
display['preview_use_all_groups'] = bool(self.preview_use_all_groups_var.get())
|
||||
config_manager.config['display'] = display
|
||||
|
||||
# 保存到文件
|
||||
|
||||
Reference in New Issue
Block a user