import qtawesome from PyQt5.QtWidgets import QPushButton,QStackedWidget, QLineEdit, QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSplitter, QButtonGroup from utils.DBModels.DeviceParModels import * from UI.BlockParameterView import ParmView from UI.SearchAddressWidget import SearchAddressWidget from utils.DBModels.DeviceParModels import * from UI.LoadingDataWidget import LoadingDataWidget class BlockParameterManageWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.pressureTBlockView = ParmView(PressureTranslationBlock) self.aiFunctionBlockView = ParmView(AIFunctionBlock) self.physicalBlockView = ParmView(PhysicalBlock) self.mainlayout = QVBoxLayout() self.parameStackWidget = QStackedWidget() self.settingLayout = QHBoxLayout() self.deviceAddressLabel = QLabel('从站地址') self.deviceAddressLabel.setObjectName('deviceAddressLabel') self.deviceAddressEdit = QLineEdit() self.deviceAddressEdit.setObjectName("deviceAddressEdit") self.confirmBtn = QPushButton('加载数据') self.confirmBtn.setIcon(qtawesome.icon('fa5s.check-circle', color='#1fbb6f')) self.confirmBtn.clicked.connect(self.refreshData) self.confirmBtn.setObjectName("parameBtn") self.deviceAddressSearchBtn = QPushButton('查找') self.deviceAddressSearchBtn.setIcon(qtawesome.icon('fa.search', color='#1fbb6f')) self.deviceAddressSearchBtn.clicked.connect(self.searchAddress) self.deviceAddressSearchBtn.setObjectName("parameBtn") self.pblockBtn = QPushButton('物理块') self.pblockBtn.setCheckable(True) self.pblockBtn.setChecked(True) self.pblockBtn.setObjectName("parameBtn") self.pblockBtn.setIcon(qtawesome.icon('fa.th-large', color='#1fbb6f')) # self.pblockBtn.setCheckable(True) self.pblockBtn.clicked.connect(lambda: self.switchParameterWidget('pblockBtn')) self.fblockBtn = QPushButton('功能块') self.fblockBtn.setCheckable(True) self.fblockBtn.setObjectName("parameBtn") self.fblockBtn.setIcon(qtawesome.icon('fa.th-large', color='#1fbb6f')) self.fblockBtn.clicked.connect(lambda: self.switchParameterWidget('fblockBtn')) # self.pblockBtn.setCheckable(True) self.tblockBtn = QPushButton('转换块') self.tblockBtn.setObjectName("parameBtn") self.tblockBtn.setCheckable(True) self.tblockBtn.setIcon(qtawesome.icon('fa.th-large', color='#1fbb6f')) self.tblockBtn.clicked.connect(lambda: self.switchParameterWidget('tblockBtn')) # self.tblockBtn.setCheckable(True) self.parameterButtonGroup = QButtonGroup() self.parameterButtonGroup.setExclusive(True) self.parameterButtonGroup.addButton(self.pblockBtn) self.parameterButtonGroup.addButton(self.fblockBtn) self.parameterButtonGroup.addButton(self.tblockBtn) self.settingLayout.addWidget(self.deviceAddressLabel, 1) self.settingLayout.addWidget(self.deviceAddressEdit, 1) self.settingLayout.addWidget(self.confirmBtn, 1) self.settingLayout.addWidget(self.deviceAddressSearchBtn, 1) self.settingLayout.addWidget(self.pblockBtn, 1) self.settingLayout.addWidget(self.fblockBtn, 1) self.settingLayout.addWidget(self.tblockBtn, 1) self.settingLayout.addWidget(QSplitter(), 18) self.mainlayout.addLayout(self.settingLayout,1) self.parameStackWidget.addWidget(self.physicalBlockView) self.parameStackWidget.addWidget(self.aiFunctionBlockView) self.parameStackWidget.addWidget(self.pressureTBlockView) self.mainlayout.addWidget(self.parameStackWidget, 20) # self.proxy = QtCore.QSortFilterProxyModel(self) # self.parameTableView.proxy = self.proxy # self.proxy.setSourceModel(self.parameTableView.model) # self.parameTableView.setModel(self.proxy) # datas = PressureTranslationBlock.getallParame() # for index, data in enumerate(datas): # desc = data[2].replace('\r\n', '').replace('\n', '') # lines = [desc[i:i+50] + "\r\n" for i in range(0, len(desc), 50)] # # 合并列表为一个字符串,移除最后一个换行符 # result = "".join(lines).rstrip("\r\n") # data[2] = result # data = data + ['', '', ''] # self.parameTableView.model.append_data(data) # self.parameTableView.setVerticalHeader(ParamsVHeader(self, self.parameTableView.model.datas)) self.setLayout(self.mainlayout) def switchParameterWidget(self,blockType): match blockType: case "pblockBtn": self.parameStackWidget.setCurrentIndex(0) case "fblockBtn": self.parameStackWidget.setCurrentIndex(1) case "tblockBtn": self.parameStackWidget.setCurrentIndex(2) def refreshData(self): self.loadingDataWidget = LoadingDataWidget() self.loadingDataWidget.loadData() model = self.parameStackWidget.currentWidget().model model.updateColumn(5, '查询中...') def searchAddress(self): self.searchAddressWidget = SearchAddressWidget(self.deviceAddressEdit) self.searchAddressWidget.show()