|
|
|
@ -1,14 +1,14 @@
|
|
|
|
|
from csv import excel
|
|
|
|
|
|
|
|
|
|
import sys
|
|
|
|
|
import pandas as pd
|
|
|
|
|
from PyQt5 import QtWidgets
|
|
|
|
|
from PyQt5.QtCore import Qt
|
|
|
|
|
from PyQt5.Qt import *
|
|
|
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QMessageBox, QStackedWidget, QWidget, QTabWidget, QFileDialog, QPushButton, QGraphicsDropShadowEffect
|
|
|
|
|
from PyQt5.QtGui import QIcon
|
|
|
|
|
from PyQt5.QtWidgets import QApplication, QMainWindow, QStackedWidget, QMessageBox, QStackedWidget, QTabWidget, QFileDialog, QPushButton, QGraphicsDropShadowEffect
|
|
|
|
|
|
|
|
|
|
from PyQt5.QtCore import QSize
|
|
|
|
|
from PyQt5.QtGui import QPainter, QBrush, QColor
|
|
|
|
|
from PyQt5.QtCore import QEvent
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from ctypes import POINTER, cast
|
|
|
|
|
from ctypes.wintypes import MSG
|
|
|
|
|
from win32 import win32api, win32gui
|
|
|
|
@ -66,6 +66,7 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.rightWidget.setMouseTracking(True)
|
|
|
|
|
self.topWidget.setMouseTracking(True)
|
|
|
|
|
|
|
|
|
|
Globals.setValue('MainWindows', self) #设置全局变量
|
|
|
|
|
#初始化接口
|
|
|
|
|
# self.windowEffect = WindowEffect()
|
|
|
|
|
# # 添加DWM阴影效果
|
|
|
|
@ -85,18 +86,77 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.leftWidget.setObjectName("leftWidget")
|
|
|
|
|
|
|
|
|
|
self.projectWidget = ProjectWidgets()
|
|
|
|
|
self.userWidget = UserWidgets()
|
|
|
|
|
self.procedureManagerWidget = ProcedureManager()
|
|
|
|
|
self.controlWidget = getControlWidget()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.rightWidget = QStackedWidget()
|
|
|
|
|
self.rightWidget.setObjectName("rightWidget")
|
|
|
|
|
self.rightWidget.addWidget(self.projectWidget)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#添加导入变量按钮
|
|
|
|
|
self.importVarButton = QPushButton('导入变量')
|
|
|
|
|
self.importVarButton.setIcon(qtawesome.icon('fa5s.file-import', color = '#059669'))
|
|
|
|
|
self.importVarButton.setObjectName('importBtn')
|
|
|
|
|
self.importVarButton.setIconSize(QSize(22, 22))
|
|
|
|
|
self.importVarButton.setFlat(True)
|
|
|
|
|
self.importVarButton.clicked.connect(self.loadVar)
|
|
|
|
|
|
|
|
|
|
self.createWidgets()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.setCentralWidget(self.centralwidget)
|
|
|
|
|
self.setWindowOpacity(0.995) # 设置窗口透明度
|
|
|
|
|
|
|
|
|
|
self.topWidget = MainTop(self)
|
|
|
|
|
self.topWidget.setObjectName('topWidget')
|
|
|
|
|
|
|
|
|
|
# 初始化搜索框状态(在topWidget创建后)
|
|
|
|
|
self.topWidget.updateSearchPlaceholder()
|
|
|
|
|
|
|
|
|
|
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
|
|
|
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
|
|
|
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
|
|
|
|
self.verticalLayout.setObjectName("verticalLayout")
|
|
|
|
|
|
|
|
|
|
self.horizontalLayout.addWidget(self.leftWidget)
|
|
|
|
|
self.horizontalLayout.addWidget(self.rightWidget)
|
|
|
|
|
self.horizontalLayout.setStretch(0, 1)
|
|
|
|
|
self.horizontalLayout.setStretch(1, 10)
|
|
|
|
|
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
self.horizontalLayout.setSpacing(1)
|
|
|
|
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
self.verticalLayout.addWidget(self.topWidget)
|
|
|
|
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
|
|
|
|
self.verticalLayout.setStretch(0, 1)
|
|
|
|
|
self.verticalLayout.setStretch(1, 18)
|
|
|
|
|
self.verticalLayout.setSpacing(0)
|
|
|
|
|
|
|
|
|
|
# self.setAttribute(Qt.WA_TranslucentBackground) # 设置窗口背景透明
|
|
|
|
|
self.setWindowFlag(Qt.FramelessWindowHint)
|
|
|
|
|
|
|
|
|
|
# 添加阴影效果(接近Windows原生)
|
|
|
|
|
|
|
|
|
|
# 添加圆角(QSS)
|
|
|
|
|
# self.centralwidget.setStyleSheet("")
|
|
|
|
|
def createWidgets(self):
|
|
|
|
|
self.ModbusTcpMasterWidget = VarWidgets('ModbusTcpMaster')
|
|
|
|
|
self.ModbusTcpSlaveWidget = VarWidgets('ModbusTcpSlave')
|
|
|
|
|
self.ModbusRtuMasterWidget = VarWidgets('ModbusRtuMaster')
|
|
|
|
|
self.ModbusRtuSlaveWidget = VarWidgets('ModbusRtuSlave')
|
|
|
|
|
self.userWidget = UserWidgets()
|
|
|
|
|
self.procedureManagerWidget = ProcedureManager()
|
|
|
|
|
self.controlWidget = getControlWidget()
|
|
|
|
|
|
|
|
|
|
modbusWidgetList = [self.ModbusTcpMasterWidget, self.ModbusTcpSlaveWidget, self.ModbusRtuMasterWidget, self.ModbusRtuSlaveWidget]
|
|
|
|
|
modbusNameList = ['MODBUSTCP主站', 'MODBUSTCP从站', 'MODBUSRTU主站', 'MODBUSRTU从站',]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.profibusWidget = ProfibusWidgets()
|
|
|
|
|
self.trendWidget = TrendWidgets()
|
|
|
|
|
self.SettingWidget = SettingWidget()
|
|
|
|
@ -117,14 +177,10 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.varManageTabWidget = QTabWidget()
|
|
|
|
|
self.varManageTabWidget.setObjectName("varManageTabWidget")
|
|
|
|
|
self.varManageTabWidget.tabBar().setObjectName('varManageTabBar')
|
|
|
|
|
|
|
|
|
|
self.rightWidget = QStackedWidget()
|
|
|
|
|
self.rightWidget.setObjectName("rightWidget")
|
|
|
|
|
self.rightWidget.addWidget(self.projectWidget)
|
|
|
|
|
for widget, name in zip(modbusWidgetList, modbusNameList):
|
|
|
|
|
widget.setObjectName('varWidget')
|
|
|
|
|
self.varManageTabWidget.addTab(widget, name)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
self.varManageTabWidget.addTab(self.analogWidget,'IO')
|
|
|
|
|
self.varManageTabWidget.addTab(self.tcrtdWidget,'TCRTD')
|
|
|
|
|
self.varManageTabWidget.addTab(self.hartWidget,'HART读取')
|
|
|
|
@ -132,13 +188,6 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.varManageTabWidget.addTab(self.profibusWidget,'PROFIBUS')
|
|
|
|
|
self.varManageTabWidget.addTab(self.rpcVarTableWidget, '远程通讯')
|
|
|
|
|
|
|
|
|
|
#添加导入变量按钮
|
|
|
|
|
self.importVarButton = QPushButton('导入变量')
|
|
|
|
|
self.importVarButton.setIcon(qtawesome.icon('fa5s.file-import', color = '#059669'))
|
|
|
|
|
self.importVarButton.setObjectName('importBtn')
|
|
|
|
|
self.importVarButton.setIconSize(QSize(22, 22))
|
|
|
|
|
self.importVarButton.setFlat(True)
|
|
|
|
|
self.importVarButton.clicked.connect(self.loadVar)
|
|
|
|
|
self.varManageTabWidget.setCornerWidget(self.importVarButton)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -159,45 +208,19 @@ class MainWindow(QMainWindow):
|
|
|
|
|
self.leftWidget.procedureMag.clicked.connect(lambda: self.initProcedureDB())
|
|
|
|
|
self.leftWidget.controlMag.clicked.connect(lambda: self.showControlSystem())
|
|
|
|
|
|
|
|
|
|
self.setCentralWidget(self.centralwidget)
|
|
|
|
|
self.setWindowOpacity(0.995) # 设置窗口透明度
|
|
|
|
|
|
|
|
|
|
self.topWidget = MainTop(self)
|
|
|
|
|
self.topWidget.setObjectName('topWidget')
|
|
|
|
|
|
|
|
|
|
# 初始化搜索框状态(在topWidget创建后)
|
|
|
|
|
self.topWidget.updateSearchPlaceholder()
|
|
|
|
|
|
|
|
|
|
self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
|
|
|
|
|
self.horizontalLayout = QtWidgets.QHBoxLayout()
|
|
|
|
|
self.horizontalLayout.setObjectName("horizontalLayout")
|
|
|
|
|
self.verticalLayout.setObjectName("verticalLayout")
|
|
|
|
|
|
|
|
|
|
self.horizontalLayout.addWidget(self.leftWidget)
|
|
|
|
|
self.horizontalLayout.addWidget(self.rightWidget)
|
|
|
|
|
self.horizontalLayout.setStretch(0, 1)
|
|
|
|
|
self.horizontalLayout.setStretch(1, 10)
|
|
|
|
|
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
self.horizontalLayout.setSpacing(1)
|
|
|
|
|
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
|
|
|
|
|
self.verticalLayout.addWidget(self.topWidget)
|
|
|
|
|
self.verticalLayout.addLayout(self.horizontalLayout)
|
|
|
|
|
self.verticalLayout.setStretch(0, 1)
|
|
|
|
|
self.verticalLayout.setStretch(1, 18)
|
|
|
|
|
self.verticalLayout.setSpacing(0)
|
|
|
|
|
|
|
|
|
|
# self.setAttribute(Qt.WA_TranslucentBackground) # 设置窗口背景透明
|
|
|
|
|
self.setWindowFlag(Qt.FramelessWindowHint)
|
|
|
|
|
|
|
|
|
|
# 添加阴影效果(接近Windows原生)
|
|
|
|
|
|
|
|
|
|
# 添加圆角(QSS)
|
|
|
|
|
# self.centralwidget.setStyleSheet("")
|
|
|
|
|
def delecteWidget(self):
|
|
|
|
|
for i in reversed(range(1, self.rightWidget.count())):
|
|
|
|
|
widget = self.rightWidget.widget(i)
|
|
|
|
|
if widget:
|
|
|
|
|
self.rightWidget.removeWidget(widget)
|
|
|
|
|
widget.deleteLater()
|
|
|
|
|
|
|
|
|
|
def exButtonClicked(self, index):
|
|
|
|
|
print(Globals.getValue('currentPro'))
|
|
|
|
|
if Globals.getValue('currentPro') == -1 and index not in [0, 3]:
|
|
|
|
|
return -1
|
|
|
|
|
print(index, Globals.getValue('currentPro'))
|
|
|
|
|
|
|
|
|
|
self.rightWidget.setCurrentIndex(index)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|