From 09faf598f7f5bd424a92b3c19cf89794a95aa755 Mon Sep 17 00:00:00 2001 From: zhangxuxutm <951937200@qq.com> Date: Tue, 25 Jul 2023 16:28:27 +0800 Subject: [PATCH] =?UTF-8?q?0725=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- UI/TrendManage/ActualTrendWidget.py | 36 ++++++++++++++++++----------- UI/VarManages/Thread.py | 4 ++++ 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/UI/TrendManage/ActualTrendWidget.py b/UI/TrendManage/ActualTrendWidget.py index 157307d..2500ea5 100644 --- a/UI/TrendManage/ActualTrendWidget.py +++ b/UI/TrendManage/ActualTrendWidget.py @@ -6,6 +6,7 @@ from matplotlib.backends.qt_compat import QtCore, QtWidgets from matplotlib.backends.backend_qt5agg import (FigureCanvas, NavigationToolbar2QT as NavigationToolbar) from matplotlib.figure import Figure +from PyQt5.QtCore import QThread import matplotlib.ticker as ticker import matplotlib.pyplot as plt @@ -25,9 +26,9 @@ class ActualTrend(QtWidgets.QMainWindow): self.varName = varName - self._main = QtWidgets.QWidget() - self.setCentralWidget(self._main) - layout = QtWidgets.QVBoxLayout(self._main) + _main = QtWidgets.QWidget() + self.setCentralWidget(_main) + layout = QtWidgets.QVBoxLayout(_main) dynamic_canvas = FigureCanvas(Figure(figsize=(5, 3))) @@ -45,26 +46,30 @@ class ActualTrend(QtWidgets.QMainWindow): self._timer = dynamic_canvas.new_timer( 1000, [(self._update_canvas, (), {})]) self._timer.start() + + def _update_canvas(self): # self.n += 1 varName = self.varName varMM = ModbusVarManage.getByName(varName) - if varMM: - minY, maxY = ModbusVarManage.getByName(varName)[-2], ModbusVarManage.getByName(varName)[-1] + minY = -100 + maxY = 100 - if not minY or not maxY: - minY = -100 - maxY = 100 - else: - minY = float(minY) - maxY = float(maxY) + + if varMM: + minY, maxY = varMM[-2], varMM[-1] + minY = float(minY) + maxY = float(maxY) self._dynamic_ax.clear() acttime = time.strftime('%H:%M:%S', time.localtime(time.time())) # print(acttime) if varName != '': - uid = MBTCPMApp.backend.get('ModBus').decode('utf-8') + if MBTCPMApp.backend.get('ModBus') is not None: + uid = MBTCPMApp.backend.get('ModBus').decode('utf-8') + else: + return # print(uid) res = AsyncResult(uid) # 参数为task id if res.result: @@ -85,8 +90,13 @@ class ActualTrend(QtWidgets.QMainWindow): self._dynamic_ax.plot(pos_list, value_list, 'bo-', linewidth=2) # self._dynamic_ax.set_xlim(0,10) - self._dynamic_ax.set_ylim(minY,maxY) + self._dynamic_ax.set_ylim(minY, maxY) self._dynamic_ax.figure.canvas.draw() + + def closeEvent(self, event): + # 判断是否点击了窗口的关闭按钮 + if event.type() == event.Close: + self._timer.stop() if __name__ == "__main__": qapp = QtWidgets.QApplication(sys.argv) diff --git a/UI/VarManages/Thread.py b/UI/VarManages/Thread.py index 964ce36..e775ee4 100644 --- a/UI/VarManages/Thread.py +++ b/UI/VarManages/Thread.py @@ -1,6 +1,7 @@ import time from PyQt5.QtCore import QThread, pyqtSignal +from UI.TrendManage.ActualTrendWidget import ActualTrend from protocol.TCP.RTDTC import RTDTCClient from protocol.TCP.Analog import AnalogClient from protocol.FF.FFSimulate import FFSimulate @@ -111,3 +112,6 @@ class HartSimulateThread(FFThread): self.window.valueList = self.HartSimulate.readValue() except Exception as e: print(e) + + +