detect-gui/widget/task_list.py

138 lines
5.1 KiB
Python
Raw Normal View History

2024-11-21 11:39:52 +08:00
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
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
widget = QWidget()
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_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.initUi()
def initUi(self):
task_table = AppContext.get_edge_context().get_component("dat_task")
tasks = task_table.list_task(1)
# 添加 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 i in range(10):
x = offset
task = tasks[0]
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))
# run_task.clicked.connect(self.start_task)
y = y + 120 + offset
self.content_widget.setFixedHeight(y + offset)
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() })
self.run_dialog = TaskRunDialog(json.loads(task[3]))
dialog_result = self.run_dialog.exec_()
if dialog_result == 0:
c = 0
# self.name_text.setText(None)
# self.file_content.setPlainText(None)