from PyQt5.QtGui import QTextCharFormat, QColor, QBrush, QPixmap from PyQt5.QtWidgets import QFrame, QPushButton, QSizePolicy, QGridLayout, QPlainTextEdit from rich.layout import Layout from components.image_framework import MSG_LOCATION_RECORD, MSG_DETECTION_RECORD, get_msg_info from core.context import AppContext class TaskResultToolsFrame(QFrame): def __init__(self, parent=None): super(TaskResultToolsFrame, self).__init__(parent) self.task_result = parent layout = QGridLayout() layout.setContentsMargins(10, 0, 10, 10) self.log_text = QPlainTextEdit() self.log_text.setObjectName("logText") self.log_text.setReadOnly(True) self.start_adjust_button = QPushButton() self.start_adjust_button.setObjectName("startAdjustButton") self.start_adjust_button.setText("开始校准") self.start_adjust_button.setFixedHeight(42) self.start_adjust_button.clicked.connect(self.start_adjust) self.start_check_button = QPushButton() self.start_check_button.setObjectName("startCheckButton") self.start_check_button.setEnabled(False) self.start_check_button.setText("开始检测") self.start_check_button.setFixedHeight(42) self.start_check_button.clicked.connect(self.start_check) self.stop_check_button = QPushButton() self.stop_check_button.setObjectName("stopCheckButton") self.stop_check_button.setEnabled(False) self.stop_check_button.setText("停止检测") self.stop_check_button.setFixedHeight(42) self.stop_check_button.clicked.connect(self.stop_check) self.stop_task_button = QPushButton() self.stop_task_button.setObjectName("stopTaskButton") self.stop_task_button.setText("结束任务") self.stop_task_button.setFixedHeight(42) self.stop_task_button.clicked.connect(self.stop_task) layout.setRowStretch(0,6) layout.setRowStretch(1,1) layout.setRowStretch(2,1) layout.setRowStretch(3,1) layout.setRowStretch(4,1) layout.addWidget(self.log_text, 0, 0) layout.addWidget(self.start_adjust_button, 1, 0) layout.addWidget(self.start_check_button, 2, 0) layout.addWidget(self.stop_check_button, 3, 0) layout.addWidget(self.stop_task_button, 4, 0) self.setLayout(layout) def insert_text(self, text, font_color): char_format = QTextCharFormat() char_format.setForeground(QBrush(font_color)) self.log_text.mergeCurrentCharFormat(char_format) self.log_text.appendPlainText(text) # 开始校准 def start_adjust(self): self.start_adjust_button.setEnabled(False) self.start_check_button.setEnabled(False) self.stop_check_button.setEnabled(False) self.stop_task_button.setEnabled(False) self.log_text.setPlainText("") self.task_result.result_big_label.setPixmap(QPixmap("")) self.task_result.result_big_label.setText("广角摄像头") self.task_result.result_small_label.setPixmap(QPixmap("")) self.task_result.result_small_label.setText("高清摄像头") result = AppContext.get_edge_context().get_component('image-framework').start_adjust() if result.code < 0: self.set_default() MessageBox("校准启动失败", "error", get_msg_info(msg.record.code).decode('utf-8'), AppContext.get_main_window()).show() # QMessageBox.warning(self, '校准启动失败', get_msg_info(msg.record.code).decode('utf-8')) # 开始检测 def start_check(self): self.start_adjust_button.setEnabled(False) self.start_check_button.setEnabled(False) self.stop_check_button.setEnabled(False) self.stop_task_button.setEnabled(False) result = AppContext.get_edge_context().get_component('image-framework').start_check() if result.code < 0: self.set_default() MessageBox("检测启动失败", "error", get_msg_info(msg.record.code).decode('utf-8'), AppContext.get_main_window()).show() # 停止检测 def stop_check(self): self.start_adjust_button.setEnabled(False) self.start_check_button.setEnabled(False) self.stop_check_button.setEnabled(False) self.stop_task_button.setEnabled(False) result = AppContext.get_edge_context().get_component('image-framework').stop_check() if result.code < 0: MessageBox("检测停止失败", "error", get_msg_info(msg.record.code).decode('utf-8'), AppContext.get_main_window()).show() # QMessageBox.warning(self, '检测停止失败', get_msg_info(msg.record.code).decode('utf-8')) self.set_default() # 结束任务 def stop_task(self): AppContext.get_edge_context().get_component('image-framework').stop_all() self.task_result.close() def set_default(self): self.start_adjust_button.setEnabled(True) self.start_check_button.setEnabled(False) self.stop_check_button.setEnabled(False) self.stop_task_button.setEnabled(True)