mirror of
http://git.xinwangdao.com/cnnc-embedded-parts-detect/detect-gui.git
synced 2025-06-24 13:14:11 +08:00
146 lines
5.5 KiB
Python
146 lines
5.5 KiB
Python
import json
|
|
from datetime import datetime
|
|
|
|
import pandas as pd
|
|
from PyQt5.QtCore import Qt, QRect
|
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QGridLayout, QLineEdit, QLabel, QHBoxLayout, QPushButton, QFileDialog, \
|
|
QScrollArea, QPlainTextEdit, QMessageBox
|
|
|
|
from core.context import AppContext
|
|
from widget.task_run import TaskRunDialog
|
|
|
|
|
|
class TaskListWidget(QWidget):
|
|
def __init__(self, parent=None):
|
|
super(TaskListWidget, self).__init__(parent)
|
|
self.ratio = AppContext.get_ratio()
|
|
self.run_dialog = None
|
|
|
|
scroll_area = QScrollArea()
|
|
scroll_area.setStyleSheet("border: none;")
|
|
scroll_area.setWidgetResizable(True)
|
|
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
|
|
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
|
|
|
|
self.content_widget = QWidget()
|
|
|
|
scroll_area.setWidget(self.content_widget)
|
|
|
|
widget = QWidget()
|
|
widget_layout = QVBoxLayout(widget)
|
|
widget_layout.setContentsMargins(10, 10, 10, 10)
|
|
widget_layout.setSpacing(0)
|
|
widget_layout.addWidget(scroll_area)
|
|
|
|
layout = QVBoxLayout(self)
|
|
layout.setContentsMargins(0, 0, 0, 0)
|
|
layout.setSpacing(0)
|
|
layout.addWidget(widget)
|
|
|
|
self.init_ui()
|
|
|
|
AppContext.get_edge_context().get_component('dat_task').signals.on_receive_task.connect(self.init_ui)
|
|
|
|
def init_ui(self):
|
|
task_table = AppContext.get_edge_context().get_component("dat_task")
|
|
tasks = task_table.list_task(1)
|
|
if len(tasks) == 0:
|
|
return
|
|
self.content_widget.children().clear()
|
|
# 添加 TITLE
|
|
x = 0
|
|
y = 0
|
|
offset = 10
|
|
x = x + offset
|
|
y = y + offset
|
|
label_name = QLabel(self.content_widget)
|
|
label_name.setObjectName("THeader")
|
|
label_name.setText("任务名称")
|
|
label_name.setGeometry(QRect(x, y, 200, 30))
|
|
x = x + 200 + offset
|
|
label_sn = QLabel(self.content_widget)
|
|
label_sn.setObjectName("THeader")
|
|
label_sn.setText("设备序列号")
|
|
label_sn.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_param = QLabel(self.content_widget)
|
|
label_param.setObjectName("THeader")
|
|
label_param.setText("参数")
|
|
label_param.setGeometry(QRect(x, y, 400, 30))
|
|
x = x + 400 + offset
|
|
label_start = QLabel(self.content_widget)
|
|
label_start.setObjectName("THeader")
|
|
label_start.setText("开始时间")
|
|
label_start.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_end = QLabel(self.content_widget)
|
|
label_end.setObjectName("THeader")
|
|
label_end.setText("结束时间")
|
|
label_end.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_create = QLabel(self.content_widget)
|
|
label_create.setObjectName("THeader")
|
|
label_create.setText("创建时间")
|
|
label_create.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_action = QLabel(self.content_widget)
|
|
label_action.setObjectName("THeader")
|
|
label_action.setText("操作")
|
|
label_action.setGeometry(QRect(x, y, 200, 30))
|
|
|
|
y = y + 30 + offset
|
|
for task in tasks:
|
|
x = offset
|
|
label_name = QLabel(self.content_widget)
|
|
label_name.setText(task[1])
|
|
label_name.setGeometry(QRect(x, y, 200, 30))
|
|
x = x + 200 + offset
|
|
label_sn = QLabel(self.content_widget)
|
|
label_sn.setText(task[2])
|
|
label_sn.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
param = QPlainTextEdit(self.content_widget)
|
|
param.setPlainText(task[3])
|
|
param.setReadOnly(True)
|
|
param.setGeometry(QRect(x, y, 400, 120))
|
|
x = x + 400 + offset
|
|
label_start = QLabel(self.content_widget)
|
|
label_start.setText(task[6])
|
|
label_start.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_end = QLabel(self.content_widget)
|
|
label_end.setText(task[7])
|
|
label_end.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
label_create = QLabel(self.content_widget)
|
|
label_create.setText(task[8])
|
|
label_create.setGeometry(QRect(x, y, 150, 30))
|
|
x = x + 150 + offset
|
|
run_task = QPushButton(self.content_widget)
|
|
run_task.setStyleSheet("background-color: #3A36DB;")
|
|
run_task.setObjectName("run_task")
|
|
run_task.setText("开始任务")
|
|
run_task.setGeometry(QRect(x, y, 120, 30))
|
|
run_task.clicked.connect(lambda: self.start_task(task))
|
|
|
|
y = y + 120 + offset
|
|
|
|
self.content_widget.setFixedHeight(y + offset)
|
|
|
|
for ctl in self.content_widget.children():
|
|
if isinstance(ctl, QWidget):
|
|
ctl.setVisible(True)
|
|
|
|
def start_task(self, task):
|
|
task_table = AppContext.get_edge_context().get_component("dat_task")
|
|
task_table.update_task({ "id": task[0], "state": 1, "start_time": datetime.now() })
|
|
try:
|
|
param_json = json.loads(task[3])
|
|
self.run_dialog = TaskRunDialog(param_json)
|
|
dialog_result = self.run_dialog.exec_()
|
|
if dialog_result == 0:
|
|
c = 0
|
|
# self.name_text.setText(None)
|
|
# self.file_content.setPlainText(None)
|
|
except Exception as e:
|
|
QMessageBox.warning(self, 'JSON Error', f'Invalid JSON: {e}') |