采集卡bug修复
This commit is contained in:
@@ -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("提示", "配置已保存,请运行主程序")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user