You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.9 KiB
Python

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
HART通信主窗口类
实现基于PyQt的HART通信界面主窗口包含多个功能选项卡
"""
import sys
from PyQt5.QtWidgets import QApplication, QTabWidget, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
# 导入自定义模块
from UI.HartWidgets.HartConnectionWidget import HartConnectionWidget
from UI.HartWidgets.HartDeviceInfoWidget import HartDeviceInfoWidget
from UI.HartWidgets.HartDeviceConfigWidget import HartDeviceConfigWidget
from UI.HartWidgets.HartSensorConfigWidget import HartSensorConfigWidget
from UI.HartWidgets.HartCalibrationWidget import HartCalibrationWidget
from UI.HartWidgets.HartVariableInfoWidget import HartVariableInfoWidget
class HartMainWindow(QWidget):
"""
HART通信主窗口类
实现基于PyQt的HART通信界面主窗口包含多个功能选项卡
"""
def __init__(self):
"""
初始化主窗口
"""
super().__init__()
# 创建主布局
self.mainLayout = QVBoxLayout(self)
self.mainLayout.setContentsMargins(10, 10, 10, 10)
# 创建选项卡窗口部件
self.tabWidget = QTabWidget()
self.tabWidget.setObjectName("hartTabWidget")
self.tabWidget.tabBar().setObjectName("hartTabBar")
self.tabWidget.setFont(QFont("Microsoft YaHei", 10))
self.mainLayout.addWidget(self.tabWidget)
# 初始化HART通信对象
self.hartComm = None
# 初始化界面
self.initUI()
def initUI(self):
"""
初始化用户界面
"""
# 创建连接设备选项卡
self.connectionWidget = HartConnectionWidget()
self.tabWidget.addTab(self.connectionWidget, "设备连接")
# 创建设备信息选项卡
self.deviceInfoWidget = HartDeviceInfoWidget()
self.tabWidget.addTab(self.deviceInfoWidget, "设备信息")
# 创建变量信息选项卡
self.variableInfoWidget = HartVariableInfoWidget()
self.tabWidget.addTab(self.variableInfoWidget, "变量信息")
# 创建传感器配置选项卡
self.sensorConfigWidget = HartSensorConfigWidget()
self.tabWidget.addTab(self.sensorConfigWidget, "传感器配置")
# 创建校准功能选项卡
self.calibrationWidget = HartCalibrationWidget()
self.tabWidget.addTab(self.calibrationWidget, "校准功能")
# 创建设备配置选项卡
self.deviceConfigWidget = HartDeviceConfigWidget()
self.tabWidget.addTab(self.deviceConfigWidget, "设备配置")
# 将 connectionWidget 实例传递给 deviceConfigWidget
self.deviceConfigWidget.setConnectionWidget(self.connectionWidget)
# 连接信号和槽
self.connectionWidget.connectionStatusChanged.connect(self.onConnectionStatusChanged)
self.connectionWidget.hartCommCreated.connect(self.onHartCommCreated)
def onConnectionStatusChanged(self, connected):
"""
连接状态改变时的处理函数
Args:
connected (bool): 连接状态
"""
# 根据连接状态启用或禁用其他选项卡
for i in range(1, self.tabWidget.count()):
self.tabWidget.setTabEnabled(i, connected)
def onHartCommCreated(self, hartComm):
"""
HART通信对象创建时的处理函数
Args:
hartComm (HARTCommunication): HART通信对象
"""
self.hartComm = hartComm
# 将HART通信对象传递给其他选项卡
self.deviceInfoWidget.setHartComm(hartComm)
self.variableInfoWidget.setHartComm(hartComm)
self.sensorConfigWidget.setHartComm(hartComm)
self.calibrationWidget.setHartComm(hartComm)
self.deviceConfigWidget.setHartComm(hartComm)