更新接口

This commit is contained in:
2025-10-25 14:31:55 +08:00
parent 15a83a5f06
commit 428b577808

120
main.py
View File

@@ -604,6 +604,9 @@ class MainWindow(QMainWindow):
# 初始化默认识别方法CRNN的模型
self.change_recognition_method(self.current_recognition_method)
# 加载白名单
self.load_whitelist()
def init_ui(self):
"""初始化用户界面"""
@@ -815,8 +818,29 @@ class MainWindow(QMainWindow):
""")
self.remove_whitelist_button.clicked.connect(self.remove_from_whitelist)
self.edit_whitelist_button = QPushButton("编辑")
self.edit_whitelist_button.setFixedSize(60, 32)
self.edit_whitelist_button.setStyleSheet("""
QPushButton {
background-color: #ffc107;
color: #212529;
border: none;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
}
QPushButton:hover {
background-color: #e0a800;
}
QPushButton:pressed {
background-color: #d39e00;
}
""")
self.edit_whitelist_button.clicked.connect(self.edit_whitelist_item)
input_row.addWidget(self.whitelist_input)
input_row.addWidget(self.add_whitelist_button)
input_row.addWidget(self.edit_whitelist_button)
input_row.addWidget(self.remove_whitelist_button)
# 白名单列表
@@ -1627,18 +1651,98 @@ class MainWindow(QMainWindow):
except Exception as e:
print(f"发送道闸命令失败: {e}")
def save_whitelist(self):
"""保存白名单到文件"""
try:
whitelist_file = os.path.join(os.path.dirname(__file__), 'whitelist.json')
with open(whitelist_file, 'w', encoding='utf-8') as f:
json.dump(list(self.whitelist), f, ensure_ascii=False, indent=2)
print(f"白名单已保存到: {whitelist_file}")
return True
except Exception as e:
print(f"保存白名单失败: {e}")
return False
def load_whitelist(self):
"""从文件加载白名单"""
try:
whitelist_file = os.path.join(os.path.dirname(__file__), 'whitelist.json')
if os.path.exists(whitelist_file):
with open(whitelist_file, 'r', encoding='utf-8') as f:
whitelist_data = json.load(f)
if isinstance(whitelist_data, list):
self.whitelist = set(whitelist_data)
# 更新显示
self.whitelist_display.clear()
for plate in self.whitelist:
self.whitelist_display.addItem(plate)
print(f"白名单已从文件加载,共 {len(self.whitelist)} 个车牌")
return True
else:
print("白名单文件格式错误")
return False
else:
print("白名单文件不存在,使用空白名单")
return False
except Exception as e:
print(f"加载白名单失败: {e}")
return False
def add_to_whitelist(self):
"""添加车牌到白名单"""
"""添加或修改白名单车牌"""
plate_number = self.whitelist_input.text().strip().upper()
if plate_number and plate_number not in self.whitelist:
if not plate_number:
print("请输入有效的车牌号")
return
# 检查是否有选中的项(编辑模式)
current_item = self.whitelist_display.currentItem()
if current_item:
# 编辑模式:替换选中的车牌
old_plate_number = current_item.text()
if old_plate_number != plate_number:
# 如果车牌号有变化,更新白名单和显示
if plate_number not in self.whitelist:
self.whitelist.discard(old_plate_number)
self.whitelist.add(plate_number)
self.whitelist_display.addItem(plate_number)
self.whitelist_input.clear()
print(f"已添加车牌到白名单: {plate_number}")
elif plate_number in self.whitelist:
current_item.setText(plate_number)
print(f"已修改白名单车牌: {old_plate_number} -> {plate_number}")
# 保存到文件
self.save_whitelist()
else:
print(f"车牌已在白名单中: {plate_number}")
else:
print("请输入有效的车牌号")
print(f"车牌号未变化: {plate_number}")
else:
# 添加模式:添加新车牌
if plate_number not in self.whitelist:
self.whitelist.add(plate_number)
self.whitelist_display.addItem(plate_number)
print(f"已添加车牌到白名单: {plate_number}")
# 保存到文件
self.save_whitelist()
else:
print(f"车牌已在白名单中: {plate_number}")
# 清空输入框
self.whitelist_input.clear()
# 取消选择
self.whitelist_display.clearSelection()
def edit_whitelist_item(self):
"""编辑白名单中选中的车牌"""
current_item = self.whitelist_display.currentItem()
if current_item:
old_plate_number = current_item.text()
# 将选中的车牌号填入输入框
self.whitelist_input.setText(old_plate_number)
# 聚焦到输入框
self.whitelist_input.setFocus()
# 选中全部文本,方便用户直接修改
self.whitelist_input.selectAll()
print(f"正在编辑车牌: {old_plate_number}")
else:
print("请选择要编辑的车牌")
def remove_from_whitelist(self):
"""从白名单中删除选中的车牌"""
@@ -1648,6 +1752,8 @@ class MainWindow(QMainWindow):
self.whitelist.discard(plate_number)
self.whitelist_display.takeItem(self.whitelist_display.row(current_item))
print(f"已从白名单中删除车牌: {plate_number}")
# 保存到文件
self.save_whitelist()
else:
print("请选择要删除的车牌")