detect-gui/widget/task_run.py
2024-11-22 10:21:44 +08:00

259 lines
9.9 KiB
Python

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QDialog, QWidget, QVBoxLayout, QHBoxLayout, QGridLayout, QScrollArea, QPushButton, \
QSpacerItem, QSizePolicy, QLabel
from core.context import AppContext
from widget.embed_item import EmbedItem
class TaskRunDialog(QDialog):
def __init__(self, param, parent=None):
super(TaskRunDialog, self).__init__(parent)
self.ratio = AppContext.get_ratio()
self.checkIndex = 1
self.param = param
self.setWindowFlags(Qt.WindowStaysOnTopHint)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowModality(Qt.ApplicationModal)
self.setAttribute(Qt.WA_DeleteOnClose)
self.setWindowTitle("检测窗口")
self.showFullScreen()
self.bim_widget = None
self.check_widget = None
self.embed_widgets = []
self.start_adjust_button = None
self.start_check_button = None
self.stop_check_button = None
self.stop_task_button = None
self.init_ui()
AppContext.get_edge_context().get_component('image-framework').signals.on_image_result.connect(lambda data: self.image_result(data))
def image_result(self, data):
ccc = data
def init_ui(self):
# bim
self.bim_widget = QWidget()
self.bim_widget.setObjectName("bimWidget")
self.bim_widget.setFixedWidth(3000)
# 选择区
self.check_widget = QWidget(self.bim_widget)
self.check_widget.setObjectName("checkWidget")
self.check_widget.setFixedSize(160, 160)
self.check_widget.move(90, 230)
# 预埋件
self.embed_widgets = []
for item in self.param:
embed_item = EmbedItem(self.bim_widget)
embed_item.setObjectName(item["code"])
embed_item.setItemParam(item)
self.embed_widgets.append(embed_item)
map_widget = QWidget()
legend_widget = QWidget()
legend_layout = QHBoxLayout()
legend_layout.setContentsMargins(0, 0, 0, 0)
legend_layout.setSpacing(0)
legend_widget.setLayout(legend_layout)
legend_check_widget = QWidget()
legend_check_widget.setObjectName("legendCheckWidget")
legend_std_widget = QWidget()
legend_std_widget.setObjectName("legendStdWidget")
legend_ok_widget = QWidget()
legend_ok_widget.setObjectName("legendOkWidget")
legend_ng_widget = QWidget()
legend_ng_widget.setObjectName("legendNgWidget")
legend_normal_widget = QWidget()
legend_normal_widget.setObjectName("legendNormalWidget")
legend_check_label = QLabel()
legend_check_label.setObjectName("legendCheckLabel")
legend_check_label.setText("检测区域")
legend_std_label = QLabel()
legend_std_label.setObjectName("legendStdLabel")
legend_std_label.setText("基准件")
legend_ok_label = QLabel()
legend_ok_label.setObjectName("legendOkLabel")
legend_ok_label.setText("合格件")
legend_ng_label = QLabel()
legend_ng_label.setObjectName("legendNgLabel")
legend_ng_label.setText("不合格件")
legend_normal_label = QLabel()
legend_normal_label.setObjectName("legendNormalLabel")
legend_normal_label.setText("待检测件")
legend_layout.addStretch(1)
legend_layout.addWidget(legend_check_widget)
legend_layout.addSpacing(5)
legend_layout.addWidget(legend_check_label)
legend_layout.addSpacing(40)
legend_layout.addWidget(legend_std_widget)
legend_layout.addSpacing(5)
legend_layout.addWidget(legend_std_label)
legend_layout.addSpacing(40)
legend_layout.addWidget(legend_ok_widget)
legend_layout.addSpacing(5)
legend_layout.addWidget(legend_ok_label)
legend_layout.addSpacing(40)
legend_layout.addWidget(legend_ng_widget)
legend_layout.addSpacing(5)
legend_layout.addWidget(legend_ng_label)
legend_layout.addSpacing(40)
legend_layout.addWidget(legend_normal_widget)
legend_layout.addSpacing(5)
legend_layout.addWidget(legend_normal_label)
legend_layout.addStretch(1)
content_widget = QWidget()
content_widget.setObjectName("contentWidget")
picture_label = QLabel()
picture_label.setObjectName("pictureWidget")
picture_label.setFixedWidth(450)
picture_label.setFixedHeight(450)
picture_label.setScaledContents(True)
picture_pixmap = QPixmap("assets/img2.png")
picture_label.setPixmap(picture_pixmap)
view_widget = QWidget()
view_widget.setObjectName("viewWidget")
view_widget.setFixedHeight(450)
view_label = QLabel(view_widget)
view_label.setObjectName("viewLabel")
view_label.setFixedHeight(450)
view_label.setScaledContents(True)
view_pixmap = QPixmap("assets/img1.jpg")
sc = view_pixmap.height() / 450
view_label.setFixedWidth(view_pixmap.width() / sc)
view_label.setPixmap(view_pixmap)
view_label.setGeometry((view_widget.width() - view_label.width() / 2), 0, view_label.width(), view_label.height())
view_check_widget = QWidget(view_widget)
view_check_widget.setObjectName("viewCheckWidget")
view_check_widget.setGeometry(view_label.geometry().x() + 145, 170, 240, 240)
# view_widget = QWidget()
# view_widget.setObjectName("viewWidget")
# view_widget.setFixedWidth(1000)
# view_widget.setFixedHeight(450)
# picture_widget = QWidget()
# picture_widget.setObjectName("pictureWidget")
# picture_widget.setFixedHeight(450)
tool_widget = QWidget()
tool_widget.setObjectName("toolWidget")
tool_widget.setFixedWidth(150)
tool_widget.setFixedHeight(450)
tool_layout = QVBoxLayout()
tool_layout.setContentsMargins(0, 0, 0, 0)
tool_layout.setSpacing(0)
self.start_adjust_button = QPushButton()
self.start_adjust_button.setObjectName("startAdjustButton")
self.start_adjust_button.setText("开始校准")
self.start_adjust_button.setFixedHeight(self.ratio * 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(self.ratio * 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(self.ratio * 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(self.ratio * 42)
self.stop_task_button.clicked.connect(self.reject)
tool_widget.setLayout(tool_layout)
spacer = QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding)
tool_layout.addItem(spacer)
tool_layout.addWidget(self.start_adjust_button)
tool_layout.addSpacing(20)
tool_layout.addWidget(self.start_check_button)
tool_layout.addSpacing(20)
tool_layout.addWidget(self.stop_check_button)
tool_layout.addSpacing(20)
tool_layout.addWidget(self.stop_task_button)
tool_layout.addSpacing(20)
content_layout = QHBoxLayout()
content_layout.setContentsMargins(0, 0, 0, 20)
content_layout.setSpacing(0)
content_layout.addWidget(view_widget)
content_layout.addSpacing(20)
content_layout.addWidget(picture_label)
content_layout.addSpacing(20)
content_layout.addWidget(tool_widget)
content_widget.setLayout(content_layout)
layout = QVBoxLayout()
layout.setContentsMargins(20, 20, 20, 20)
layout.setSpacing(0)
layout.addWidget(map_widget)
layout.addSpacing(5)
layout.addWidget(legend_widget)
layout.addSpacing(20)
layout.addWidget(content_widget)
self.setLayout(layout)
map_area = QScrollArea()
map_area.setObjectName("mapArea")
map_area.setWidgetResizable(True)
map_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOn)
map_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
map_widget.setLayout(QGridLayout())
map_widget.layout().setContentsMargins(0, 0, 0, 0)
map_widget.layout().setSpacing(0)
map_widget.layout().addWidget(map_area)
map_area.setWidget(self.bim_widget)
def start_adjust(self):
self.start_adjust_button.setEnabled(False)
self.start_check_button.setEnabled(True)
self.stop_check_button.setEnabled(False)
AppContext.get_edge_context().get_component('image-framework').start_detect()
def start_check(self):
self.start_adjust_button.setEnabled(False)
self.start_check_button.setEnabled(False)
self.stop_check_button.setEnabled(True)
index = 0
for item in self.embed_widgets:
if item.objectName() == 'STD': continue
if self.check_widget.geometry().contains(item.rect):
item.setIndex(str(self.checkIndex))
if index % 2 == 0:
item.setChecked()
else:
item.setError()
index += 1
def stop_check(self):
self.start_adjust_button.setEnabled(True)
self.start_check_button.setEnabled(False)
self.stop_check_button.setEnabled(False)
self.checkIndex += 1