From c53ac2e2cc41bc3ddff816e9887cfc951eb8923e Mon Sep 17 00:00:00 2001 From: njdaoyehu Date: Thu, 21 Nov 2024 16:29:40 +0800 Subject: [PATCH] fixed --- .idea/detect-gui.iml | 2 +- .idea/misc.xml | 2 +- components/dat_task.py | 7 ++++++- main.py | 4 +++- widget/task_list.py | 37 +++++++++++++++++++++++-------------- widget/task_run.py | 2 +- 6 files changed, 35 insertions(+), 19 deletions(-) diff --git a/.idea/detect-gui.iml b/.idea/detect-gui.iml index 80f67ae..a1b377a 100644 --- a/.idea/detect-gui.iml +++ b/.idea/detect-gui.iml @@ -4,7 +4,7 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 66b3d02..9f2e3a2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/components/dat_task.py b/components/dat_task.py index 5f97c36..b6accd4 100644 --- a/components/dat_task.py +++ b/components/dat_task.py @@ -3,12 +3,16 @@ import sqlite3 from dynaconf.base import Settings from exceptiongroup import catch - +from PyQt5.QtCore import QObject, pyqtSignal from core.edge_component import EdgeComponent, action, service +class TaskTableSignals(QObject): + # QT 信号 + on_receive_task = pyqtSignal() @action("dat_task", auto_start=True) class TaskTable(EdgeComponent): + signals = TaskTableSignals() def __init__(self, context): super(TaskTable, self).__init__(context) @@ -128,6 +132,7 @@ class TaskTable(EdgeComponent): (task['id'], task['name'], task['deviceSn'], task['paramJson'], task['state'], task['createTime'], task['updateTime']) ) conn.commit() + self.signals.on_receive_task.emit() except Exception as e: self.logger.error(e) finally: diff --git a/main.py b/main.py index 565a7be..4195225 100644 --- a/main.py +++ b/main.py @@ -98,8 +98,10 @@ class DetectWindow(QMainWindow): self.battery_change(self.battery) # 设置窗口默认全屏 - self.resize(1024, 768) + # self.resize(1024, 768) # self.showFullScreen() + self.setWindowState(Qt.WindowMaximized) + # def init_signals(self): ups = AppContext.get_edge_context().get_component('ups') diff --git a/widget/task_list.py b/widget/task_list.py index e8c578f..eb16eb9 100644 --- a/widget/task_list.py +++ b/widget/task_list.py @@ -4,7 +4,7 @@ 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 + QScrollArea, QPlainTextEdit, QMessageBox from core.context import AppContext from widget.task_run import TaskRunDialog @@ -16,8 +16,6 @@ class TaskListWidget(QWidget): self.ratio = AppContext.get_ratio() self.run_dialog = None - widget = QWidget() - scroll_area = QScrollArea() scroll_area.setStyleSheet("border: none;") scroll_area.setWidgetResizable(True) @@ -28,6 +26,7 @@ class TaskListWidget(QWidget): scroll_area.setWidget(self.content_widget) + widget = QWidget() widget_layout = QVBoxLayout(widget) widget_layout.setContentsMargins(10, 10, 10, 10) widget_layout.setSpacing(0) @@ -38,12 +37,16 @@ class TaskListWidget(QWidget): layout.setSpacing(0) layout.addWidget(widget) - self.initUi() + self.init_ui() - def initUi(self): + 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 @@ -121,18 +124,24 @@ class TaskListWidget(QWidget): 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) + 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() }) - 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) \ No newline at end of file + 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}') \ No newline at end of file diff --git a/widget/task_run.py b/widget/task_run.py index 6048a77..9ef726b 100644 --- a/widget/task_run.py +++ b/widget/task_run.py @@ -12,12 +12,12 @@ class TaskRunDialog(QDialog): self.ratio = AppContext.get_ratio() self.checkIndex = 1 self.param = param - self.setWindowState(Qt.WindowMaximized) 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