diff --git a/widgets/main_window.py b/widgets/main_window.py index e539617..4ede02e 100644 --- a/widgets/main_window.py +++ b/widgets/main_window.py @@ -1671,12 +1671,31 @@ class MainWindow(MainWindowUI): # 连接电力数据变化信号 self.electricity_handler.electricity_data_changed.connect(self.update_electricity_statistics) - - # 立即更新一次用电量数据 - self.update_electricity_statistics() + + # 连接贴标信号 + self.machine_handlers.label_signal_changed.connect(self.handle_label_signal) # 连接称重数据变化信号 self.machine_handlers.weight_changed.connect(self.handle_weight_data) + + # 连接NG信号 + self.machine_handlers.ng_changed.connect(self.handle_ng) + + # 连接故障信号 + self.machine_handlers.error_1_changed.connect(self.handle_error_1) + self.machine_handlers.error_2_changed.connect(self.handle_error_2) + self.machine_handlers.error_3_changed.connect(self.handle_error_3) + + # 连接上下料反馈信号 + self.machine_handlers.loading_feedback_changed.connect(self.handle_loading_feedback) + self.machine_handlers.unloading_feedback_changed.connect(self.handle_unloading_feedback) + + # 连接急停信号 + self.emergency_stop_signal.connect(self._handle_emergency_stop_ui) + + # 立即更新一次用电量数据 + self.update_electricity_statistics() + # 立即更新一次订单数量和产量统计数据 self.update_order_statistics() @@ -1800,7 +1819,7 @@ class MainWindow(MainWindowUI): """ try: # 如果当前重量与定时器启动时的重量相同,说明这段时间内没有新的重量数据 - if self._current_weight == original_weight_kg: + if self._current_weight == original_weight_kg and self._current_weight > 0.5: logging.info(f"重量 {original_weight_kg}kg 在{self._weight_stable_threshold}秒内保持稳定") # 如果这个重量与上一次处理的重量接近(±0.1kg),且标记已处理,则跳过 @@ -3190,17 +3209,34 @@ class MainWindow(MainWindowUI): # 显示警告对话框 QMessageBox.warning(self, "急停警告", "监听到急停信号") + # 恢复按钮样式 - 确保在主线程中执行 + logging.info("急停触发:开始恢复按钮样式") + self.restore_start_button_style() + logging.info("急停触发:已恢复开始按钮样式") + + if hasattr(self, 'restore_output_button_style'): + self.restore_output_button_style() + logging.info("急停触发:已恢复下料按钮样式") + + if hasattr(self, 'restore_input_button_style'): + self.restore_input_button_style() + logging.info("急停触发:已恢复上料按钮样式") + # 更新错误状态标签 self.error_status_label.setText("故障: 急停") self.error_status_label.setToolTip("急停按钮被触发") self.error_status_label.setStyleSheet("color: red; font-weight: bold;") + + logging.info("急停UI已更新:按钮样式已恢复,状态标签已更新") else: # 急停信号解除,恢复错误状态显示 self._update_error_status() # 恢复故障状态标签 - self.label_status_label.setText("故障: 正常") - self.label_status_label.setStyleSheet("") + self.error_status_label.setText("故障: 正常") + self.error_status_label.setStyleSheet("color: green; font-weight: bold;") + + logging.info("急停解除UI已更新:状态标签已恢复") except Exception as e: logging.error(f"处理急停UI更新失败: {str(e)}")