更新接口
This commit is contained in:
120
main.py
120
main.py
@@ -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("请选择要删除的车牌")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user