采集卡bug修复

This commit is contained in:
Ray
2025-10-29 15:27:50 +08:00
parent f7dbf223cb
commit bcc971d528
3 changed files with 236 additions and 52 deletions

View File

@@ -127,6 +127,12 @@ class ConfigGUI:
# 加载配置组列表
self.update_group_list()
# 如果有配置组,默认选择第一个
if len(config_manager.config['groups']) > 0:
self.selected_index = 0
self.group_listbox.selection_set(0)
self.load_group_config(0)
# 加载预览配置
display = config_manager.config.get('display', {})
for key in ['preview_width', 'preview_height', 'preview_columns', 'preview_rows']:
@@ -260,16 +266,30 @@ class ConfigGUI:
def save_config(self):
"""保存当前编辑的配置"""
# 检查索引有效性
if self.selected_index >= len(config_manager.config['groups']):
messagebox.showerror("错误", f"配置组索引 {self.selected_index} 无效")
return False
# 保存当前组的配置
group = config_manager.get_group_by_index(self.selected_index)
if group:
for key, var in self.config_vars.items():
if not key.startswith('display_'):
try:
value = int(var.get()) if var.get().isdigit() else var.get()
value_str = var.get().strip()
# 特殊处理:某些字段需要转换为整数
if key in ['camera_index', 'camera_width', 'camera_height', 'serial_baudrate', 'move_velocity']:
try:
value = int(value_str) if value_str else group.get(key, 0)
except:
value = group.get(key, 0)
else:
value = value_str if value_str else group.get(key, '')
group[key] = value
except:
group[key] = var.get()
except Exception as e:
print(f"保存字段 {key} 时出错: {e}")
pass
# 保存预览配置
display = config_manager.config.get('display', {})
@@ -282,15 +302,25 @@ class ConfigGUI:
pass
config_manager.config['display'] = display
# 保存到文件
if config_manager.save_config():
# 更新左侧列表显示
self.update_group_list()
messagebox.showinfo("成功", "配置已保存")
return True
else:
messagebox.showerror("错误", "配置保存失败")
return False
def start_preview(self):
"""启动预览窗口"""
# 保存配置
self.save_config()
# 保存配置(不显示消息框,静默保存)
if not self.save_config_silent():
messagebox.showerror("错误", "配置保存失败,无法启动预览")
return
# 重新加载配置(从文件读取最新配置)
config_manager.load_config()
# 启动预览窗口
from preview import PreviewWindow
@@ -298,10 +328,57 @@ class ConfigGUI:
preview_thread.daemon = True
preview_thread.start()
def save_config_silent(self):
"""静默保存配置(不显示消息框)"""
# 保存当前组的配置
if self.selected_index >= len(config_manager.config['groups']):
print(f"⚠️ 选中索引 {self.selected_index} 超出范围")
return False
group = config_manager.get_group_by_index(self.selected_index)
if group:
for key, var in self.config_vars.items():
if not key.startswith('display_'):
try:
value_str = var.get().strip()
# 特殊处理:某些字段需要转换为整数
if key in ['camera_index', 'camera_width', 'camera_height', 'serial_baudrate', 'move_velocity']:
try:
value = int(value_str) if value_str else group.get(key, 0)
except:
value = group.get(key, 0)
else:
value = value_str if value_str else group.get(key, '')
group[key] = value
except Exception as e:
print(f"保存字段 {key} 时出错: {e}")
pass
# 保存预览配置
display = config_manager.config.get('display', {})
for key in ['preview_width', 'preview_height', 'preview_columns', 'preview_rows']:
var = self.config_vars.get(f"display_{key}")
if var:
try:
display[key] = int(var.get())
except:
pass
config_manager.config['display'] = display
# 保存到文件
result = config_manager.save_config()
# 更新左侧列表显示
if result:
self.update_group_list()
return result
def start_program(self):
"""启动主程序"""
# 保存配置
self.save_config()
if not self.save_config():
return
messagebox.showinfo("提示", "配置已保存,请运行主程序")