更新接口
This commit is contained in:
124
main.py
124
main.py
@@ -603,6 +603,9 @@ class MainWindow(QMainWindow):
|
|||||||
|
|
||||||
# 初始化默认识别方法(CRNN)的模型
|
# 初始化默认识别方法(CRNN)的模型
|
||||||
self.change_recognition_method(self.current_recognition_method)
|
self.change_recognition_method(self.current_recognition_method)
|
||||||
|
|
||||||
|
# 加载白名单
|
||||||
|
self.load_whitelist()
|
||||||
|
|
||||||
|
|
||||||
def init_ui(self):
|
def init_ui(self):
|
||||||
@@ -815,8 +818,29 @@ class MainWindow(QMainWindow):
|
|||||||
""")
|
""")
|
||||||
self.remove_whitelist_button.clicked.connect(self.remove_from_whitelist)
|
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.whitelist_input)
|
||||||
input_row.addWidget(self.add_whitelist_button)
|
input_row.addWidget(self.add_whitelist_button)
|
||||||
|
input_row.addWidget(self.edit_whitelist_button)
|
||||||
input_row.addWidget(self.remove_whitelist_button)
|
input_row.addWidget(self.remove_whitelist_button)
|
||||||
|
|
||||||
# 白名单列表
|
# 白名单列表
|
||||||
@@ -1627,18 +1651,98 @@ class MainWindow(QMainWindow):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"发送道闸命令失败: {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):
|
def add_to_whitelist(self):
|
||||||
"""添加车牌到白名单"""
|
"""添加或修改白名单车牌"""
|
||||||
plate_number = self.whitelist_input.text().strip().upper()
|
plate_number = self.whitelist_input.text().strip().upper()
|
||||||
if plate_number and plate_number not in self.whitelist:
|
if not 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:
|
|
||||||
print(f"车牌已在白名单中: {plate_number}")
|
|
||||||
else:
|
|
||||||
print("请输入有效的车牌号")
|
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)
|
||||||
|
current_item.setText(plate_number)
|
||||||
|
print(f"已修改白名单车牌: {old_plate_number} -> {plate_number}")
|
||||||
|
# 保存到文件
|
||||||
|
self.save_whitelist()
|
||||||
|
else:
|
||||||
|
print(f"车牌已在白名单中: {plate_number}")
|
||||||
|
else:
|
||||||
|
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):
|
def remove_from_whitelist(self):
|
||||||
"""从白名单中删除选中的车牌"""
|
"""从白名单中删除选中的车牌"""
|
||||||
@@ -1648,6 +1752,8 @@ class MainWindow(QMainWindow):
|
|||||||
self.whitelist.discard(plate_number)
|
self.whitelist.discard(plate_number)
|
||||||
self.whitelist_display.takeItem(self.whitelist_display.row(current_item))
|
self.whitelist_display.takeItem(self.whitelist_display.row(current_item))
|
||||||
print(f"已从白名单中删除车牌: {plate_number}")
|
print(f"已从白名单中删除车牌: {plate_number}")
|
||||||
|
# 保存到文件
|
||||||
|
self.save_whitelist()
|
||||||
else:
|
else:
|
||||||
print("请选择要删除的车牌")
|
print("请选择要删除的车牌")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user