更新接口
This commit is contained in:
		
							
								
								
									
										120
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										120
									
								
								main.py
									
									
									
									
									
								
							@@ -604,6 +604,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:
 | 
				
			||||||
 | 
					            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.add(plate_number)
 | 
				
			||||||
            self.whitelist_display.addItem(plate_number)
 | 
					                    current_item.setText(plate_number)
 | 
				
			||||||
            self.whitelist_input.clear()
 | 
					                    print(f"已修改白名单车牌: {old_plate_number} -> {plate_number}")
 | 
				
			||||||
            print(f"已添加车牌到白名单: {plate_number}")
 | 
					                    # 保存到文件
 | 
				
			||||||
        elif plate_number in self.whitelist:
 | 
					                    self.save_whitelist()
 | 
				
			||||||
 | 
					                else:
 | 
				
			||||||
                    print(f"车牌已在白名单中: {plate_number}")
 | 
					                    print(f"车牌已在白名单中: {plate_number}")
 | 
				
			||||||
            else:
 | 
					            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):
 | 
					    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