From 75df5d79efa222812564cf26dbed6a3853ffdb7c Mon Sep 17 00:00:00 2001 From: yanganjie Date: Thu, 6 Nov 2025 15:10:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=99=E6=96=97=E9=87=8D?= =?UTF-8?q?=E9=87=8F=E6=9B=B4=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/widgets/conveyor_system_widget.py | 17 ++++++++--- view/widgets/hopper_widget.py | 42 +++++++++++++++++--------- 2 files changed, 40 insertions(+), 19 deletions(-) diff --git a/view/widgets/conveyor_system_widget.py b/view/widgets/conveyor_system_widget.py index 2eccf44..19da6e3 100644 --- a/view/widgets/conveyor_system_widget.py +++ b/view/widgets/conveyor_system_widget.py @@ -18,6 +18,9 @@ class ConveyorSystemWidget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("料斗与传送带界面") + + self._last_upper_hopper_weight = None # 上一次的上料斗重量(初始为None) + self.setFixedSize(443, 190) self.init_ui() self._bind() @@ -110,11 +113,15 @@ class ConveyorSystemWidget(QWidget): # 6、强制刷新UI,确保立即显示变化 self.upper_inner_label.update() - def setConveyorHopperWeight(self, weight:float): - # 1、更新传送带中的 上料斗内部进度显示 - # 假设上料斗装满之后,总的重量为 5100kg (褚工说设置为 6000kg 11/6) - total_weight = 6000 - self._update_upper_inner_height(total_weight, weight) + def setConveyorHopperWeight(self, weight:int): + if weight != self._last_upper_hopper_weight: + # 1、更新传送带中的 上料斗内部进度显示 + # 假设上料斗装满之后,总的重量为 5100kg (褚工说设置为 6000kg 11/6) + total_weight = 6000 + self._update_upper_inner_height(total_weight, weight) + + # 2、将self._last_upper_hopper_weight设置为当前重量 + self._last_upper_hopper_weight = weight def create_conveyor(self): """创建传送带组件(包含左右齿轮,group容器背景为传送带图片)""" diff --git a/view/widgets/hopper_widget.py b/view/widgets/hopper_widget.py index 44dd615..bc52c42 100644 --- a/view/widgets/hopper_widget.py +++ b/view/widgets/hopper_widget.py @@ -29,6 +29,10 @@ class HopperWidget(QWidget): self.upper_arch_breaking_status = False # 初始为不破拱状态 self.lower_arch_breaking_status = False # 初始为不破拱状态 + # 上一次获取到的料斗的当前重量 + self._last_upper_hopper_weight = None # 上一次的上料斗重量(初始为None) + self._last_lower_hopper_weight = None # 上一次的下料斗重量(初始为None) + # 料斗控制界面的固定大小为 332x482, # 需要根据具体的料斗的图片来调整 # self.setFixedSize(356, 496) @@ -336,14 +340,19 @@ class HopperWidget(QWidget): self.upper_inner_label.update() # 上料斗重量设置 - def setUpperHopperWeight(self, weight:float): - # 1、更新上料斗重量标签,显示最新重量 - self.upper_weight_label.setText(f"{weight}kg") + def setUpperHopperWeight(self, weight:int): + # 仅当重量变化时,才更新标签和进度 + if weight != self._last_upper_hopper_weight: + # 1、更新上料斗重量标签,显示最新重量 + self.upper_weight_label.setText(f"{weight}kg") - # 2、更新上料斗内部进度显示 - # 假设上料斗装满之后,总的重量为 5100kg (褚工说设置为 6000kg 11/6) - total_weight = 6000 - self._update_upper_inner_height(total_weight, weight) + # 2、更新上料斗内部进度显示 + # 假设上料斗装满之后,总的重量为 5100kg (褚工说设置为 6000kg 11/6) + total_weight = 6000 + self._update_upper_inner_height(total_weight, weight) + + # 3、设置_last_upper_hopper_weight 为当前重量 + self._last_upper_hopper_weight = weight # 上料斗方量设置 def setUpperHopperVolume(self, volume: float): @@ -361,14 +370,19 @@ class HopperWidget(QWidget): self.upper_clamp_widget.set_angle(angle) # 下料斗重量设置 - def setLowerHopperWeight(self, weight:float): - # 1、更新下料斗显示标签,显示的重量 - self.lower_weight_label.setText(f"{weight}kg") + def setLowerHopperWeight(self, weight:int): + # 仅当重量变化时,才更新标签和进度 + if weight != self._last_lower_hopper_weight: + # 1、更新下料斗显示标签,显示的重量 + self.lower_weight_label.setText(f"{weight}kg") - # 2、更新下料斗的进度显示 - # 假设下料斗装满之后 总重量为 5100kg (褚工说设置为 6000kg 11/6) - total_weight = 6000 - self._update_lower_inner_height(total_weight, weight) + # 2、更新下料斗的进度显示 + # 假设下料斗装满之后 总重量为 5100kg (褚工说设置为 6000kg 11/6) + total_weight = 6000 + self._update_lower_inner_height(total_weight, weight) + + # 3、设置_last_lower_hopper_weight 为当前重量 + self._last_lower_hopper_weight = weight def _update_lower_inner_height(self, total_weight, current_weight: float): # 1、处理边界值