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.
PROFIBUS/UI/BlockParameterManageWidget.py

137 lines
5.4 KiB
Python

1 year ago
import qtawesome
1 year ago
from PyQt5.QtWidgets import QPushButton,QStackedWidget, QLineEdit, QVBoxLayout, QHBoxLayout, QWidget, QLabel, QSplitter, QButtonGroup
1 year ago
from utils.DBModels.DeviceParModels import *
1 year ago
from UI.BlockParameterView import ParmView
1 year ago
from UI.SearchAddressWidget import SearchAddressWidget
1 year ago
from utils.DBModels.DeviceParModels import *
1 year ago
from UI.LoadingDataWidget import LoadingDataWidget
1 year ago
class BlockParameterManageWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
1 year ago
self.pressureTBlockView = ParmView(PressureTranslationBlock)
self.aiFunctionBlockView = ParmView(AIFunctionBlock)
self.physicalBlockView = ParmView(PhysicalBlock)
1 year ago
self.mainlayout = QVBoxLayout()
self.parameStackWidget = QStackedWidget()
self.settingLayout = QHBoxLayout()
self.deviceAddressLabel = QLabel('从站地址')
self.deviceAddressLabel.setObjectName('deviceAddressLabel')
1 year ago
self.deviceAddressEdit = QLineEdit()
self.deviceAddressEdit.setObjectName("deviceAddressEdit")
1 year ago
1 year ago
self.confirmBtn = QPushButton('加载数据')
self.confirmBtn.setIcon(qtawesome.icon('fa5s.check-circle', color='#1fbb6f'))
1 year ago
self.confirmBtn.clicked.connect(self.refreshData)
self.confirmBtn.setObjectName("parameBtn")
1 year ago
self.deviceAddressSearchBtn = QPushButton('查找')
self.deviceAddressSearchBtn.setIcon(qtawesome.icon('fa.search', color='#1fbb6f'))
1 year ago
self.deviceAddressSearchBtn.clicked.connect(self.searchAddress)
self.deviceAddressSearchBtn.setObjectName("parameBtn")
1 year ago
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'))
1 year ago
# 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'))
1 year ago
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'))
1 year ago
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)
1 year ago
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)
1 year ago
def refreshData(self):
self.loadingDataWidget = LoadingDataWidget()
self.loadingDataWidget.loadData()
1 year ago
model = self.parameStackWidget.currentWidget().model
model.updateColumn(5, '查询中...')
def searchAddress(self):
self.searchAddressWidget = SearchAddressWidget(self.deviceAddressEdit)
self.searchAddressWidget.show()