from PyQt5.QtCore import (QCoreApplication, Qt) from PyQt5.QtWidgets import (QGridLayout, QLabel, QLineEdit, QGroupBox, QVBoxLayout, QPushButton, QSizePolicy, QSpacerItem, QWidget, QComboBox, QMessageBox, QSplitter, QListView) from UI.Setting.TCPSetting import TCPSettingWidget from UI.Setting.RTUSetting import RTUSettingWidget from UI.Setting.RemoteConnectSetting import RemoteConnectSettingWidget class SettingWidget(QWidget): def __init__(self): super().__init__() def setupUI(self): self.modbusSettingLayout = QGridLayout() # 初始化部件 self.tcpMasterSettingWidget = TCPSettingWidget('master') self.tcpSlaveSettingWidget = TCPSettingWidget('slave') self.rtuMasterSettingWidget = RTUSettingWidget('master') self.rtuSlaveSettingWidget = RTUSettingWidget('slave') self.remoteConnectSettingWidget = RemoteConnectSettingWidget() self.tcpMasterSettingWidget.setupUI() self.tcpSlaveSettingWidget.setupUI() self.rtuMasterSettingWidget.setupUI() self.rtuSlaveSettingWidget.setupUI() # 分组布局 self.tcpGroup = QGroupBox() self.tcpLayout = QVBoxLayout() self.tcpMasterLable = QLabel('MODBUSTCP主站设置') self.tcpMasterLable.setObjectName('tcpLable') self.tcpSlaveLable = QLabel('MODBUSTCP从站站设置') self.tcpSlaveLable.setObjectName('tcpLable') self.remoteConnectLable = QLabel('远程连接设置') self.remoteConnectLable.setObjectName('tcpLable') self.tcpLayout.addWidget(self.tcpMasterLable) self.tcpLayout.addWidget(self.tcpMasterSettingWidget) self.tcpLayout.addWidget(self.tcpSlaveLable) self.tcpLayout.addWidget(self.tcpSlaveSettingWidget) self.tcpGroup.setLayout(self.tcpLayout) self.rtuGroup = QGroupBox() self.rtuLayout = QVBoxLayout() self.rtuMasterLable = QLabel('MODBUSRTU主站设置') self.rtuMasterLable.setObjectName('rtuLable') self.rtuSlaveLable = QLabel('MODBUSRTU从站站设置') self.rtuSlaveLable.setObjectName('rtuLable') self.rtuLayout.addWidget(self.rtuMasterLable) self.rtuLayout.addWidget(self.rtuMasterSettingWidget) self.rtuLayout.addWidget(self.rtuSlaveLable) self.rtuLayout.addWidget(self.rtuSlaveSettingWidget) self.rtuGroup.setLayout(self.rtuLayout) self.remoteConnectGroup = QGroupBox() self.remoteConnectLayout = QVBoxLayout() self.remoteConnectLayout.addWidget(self.remoteConnectLable) self.remoteConnectLayout.addWidget(self.remoteConnectSettingWidget) self.remoteConnectGroup.setLayout(self.remoteConnectLayout) # 添加到主布局 self.modbusSettingLayout.addWidget(self.tcpGroup, 0, 0, 1, 1) self.modbusSettingLayout.addWidget(self.rtuGroup, 0, 1, 1, 1) self.modbusSettingLayout.addWidget(self.remoteConnectGroup, 0, 2, 1, 1) # 调整布局样式 self.modbusSettingLayout.setColumnStretch(0, 1) self.modbusSettingLayout.setColumnStretch(1, 1) self.modbusSettingLayout.setColumnStretch(2, 1) self.modbusSettingLayout.setContentsMargins(10, 10, 10, 10) self.modbusSettingLayout.setSpacing(15) self.setLayout(self.modbusSettingLayout)