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/MainWindow.py

99 lines
4.2 KiB
Python

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QToolBar, QAction, QTabWidget, QGridLayout
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from utils.DBModels.BaseModel import *
from model.ClientModel.Client import Client
from UI.DeviceWidget import DeviceWidget
from model.ProjectModel.DeviceManage import DevicesManange
class CommonHelper:
def __init__(self):
pass
@staticmethod
def readQss(style):
with open(style,"r") as f:
return f.read()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.devicesManange = DevicesManange()
self.initUI()
def initUI(self):
self.toolbar = QToolBar()
self.addToolBar(self.toolbar)
self.startProtocolBtn = QAction("开始通讯", self)
self.startProtocolBtn.setObjectName("startProtocolBtn")
self.startProtocolBtn.triggered.connect(self.startProtocol)
self.loadProjectBtn = QAction('导入工程', self)
self.loadProjectBtn.setObjectName("loadProjectBtn")
self.loadProjectBtn.triggered.connect(self.loadProject)
self.toolbar.addAction(self.loadProjectBtn)
self.toolbar.addAction(self.startProtocolBtn)
dpMasterDockWidget = QDockWidget('DP主站')
dpMasterDockWidget.setWidget(DeviceWidget(dpMasterDockWidget, self.devicesManange))
dpMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
dpSlaveDockWidget = QDockWidget('DP从站')
dpSlaveDockWidget.setWidget(DeviceWidget(dpSlaveDockWidget, self.devicesManange))
dpSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
paMasterDockWidget = QDockWidget('PA主站')
paMasterDockWidget.setWidget(DeviceWidget(paMasterDockWidget, self.devicesManange))
paMasterDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
paSlaveDockWidget = QDockWidget('PA从站')
paSlaveDockWidget.setWidget(DeviceWidget(paSlaveDockWidget, self.devicesManange))
paSlaveDockWidget.setFeatures(QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable) # type: ignore
self.addDockWidget(Qt.TopDockWidgetArea, dpMasterDockWidget) # type: ignore
self.addDockWidget(Qt.TopDockWidgetArea, dpSlaveDockWidget) # type: ignore
self.addDockWidget(Qt.BottomDockWidgetArea, paMasterDockWidget) # type: ignore
self.addDockWidget(Qt.BottomDockWidgetArea, paSlaveDockWidget) # type: ignore
self.setWindowIcon(QIcon('Static/zhjt.ico'))
self.setWindowTitle("PROFIBUS")
self.showMaximized()
def startProtocol(self):
dockWidgets = self.findChildren(QDockWidget) #找到四个dockWidget窗口
for dockWidget in dockWidgets:
deviceTabWidgets = dockWidget.findChildren(QTabWidget, 'deviceTabWidget') #判断四个窗口里是否有deviceTabWidget
for deviceTabWidget in deviceTabWidgets:
areaTabWidgets = deviceTabWidget.findChildren(QTabWidget, 'areaTabWidget')
for areaTabWidget in areaTabWidgets:
leftLayout = areaTabWidget.currentWidget().layout().itemAt(0)
if isinstance(leftLayout,QGridLayout):
masterAndSlave = dockWidget.windowTitle()[2:5]
dataType = leftLayout.itemAtPosition(0,1).widget().currentText()
dataTypeAndModel = masterAndSlave + dataType
if dataTypeAndModel in ['主站AI', '主站DI', '从站AO', '从站DO']:
curIndex = areaTabWidget.currentIndex()
buttonlayoutWidget = areaTabWidget.currentWidget().layout().itemAt(2).itemAtPosition(0,0).widget()#获取buttonlayout
buttonlayoutWidget.readValues(deviceName = deviceName, curIndex = curIndex)
def loadProject(self):
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
Client.initDB()
window = MainWindow()
window.show()
sys.exit(app.exec_())