diff --git a/Static/Area.qss b/Static/Area.qss index 092f634..06aa39b 100644 --- a/Static/Area.qss +++ b/Static/Area.qss @@ -46,7 +46,7 @@ QPushButton#wirteDIDOforceBtn:hover{ } -QPushButton#forceBtn { +QPushButton#profibusForceBtn { font-size: 22px; @@ -67,7 +67,7 @@ QPushButton#forceBtn { } -QPushButton#forceBtn:hover{ +QPushButton#profibusForceBtn:hover{ font: bold; diff --git a/Static/Main.qss b/Static/Main.qss index 12ef474..0a5531a 100644 --- a/Static/Main.qss +++ b/Static/Main.qss @@ -57,8 +57,9 @@ background : #181922; background-color: #000000; }*/ -QTabWidget#varManageTabWidget QTabBar::tab{ - + +QTabBar#varManageTabBar::tab{ + font-family: ".SFNSDisplay-Medium"; font-size: 20px; @@ -66,8 +67,42 @@ QTabWidget#varManageTabWidget QTabBar::tab{ width: 160px; height: 40px; + } + + +QTabBar#varManageTabBar::tab:hover{ + + background-color: #3787f7; + + color: #000; + + border: 2px solid #ccc; + + /* font-weight: bold; */ + + padding-bottom: 7px; + + +} + +QTabBar#varManageTabBar::tab:selected{ + + background-color: #3787f7; + + color: #000; + + border: 2px solid #ccc; + + font-weight: bold; + + + +} + + + QPushButton{ border: none; diff --git a/Static/Profibus.qss b/Static/Profibus.qss index beb134f..18d5a54 100644 --- a/Static/Profibus.qss +++ b/Static/Profibus.qss @@ -208,7 +208,7 @@ QDockWidget::title{ } -QPushButton#startProtocolBtn, QPushButton#switchBtn, QPushButton#switchTouchBtn, QPushButton#deviceParameterManageBtn{ +QPushButton#profibusStartProtocolBtn, QPushButton#switchBtn, QPushButton#switchTouchBtn, QPushButton#deviceParameterManageBtn{ font-size: 25px; @@ -218,7 +218,7 @@ QPushButton#startProtocolBtn, QPushButton#switchBtn, QPushButton#switchTouchBtn, } -QPushButton#startProtocolBtn:hover, QPushButton#switchBtn:hover, QPushButton#switchTouchBtn:hover, +QPushButton#profibusStartProtocolBtn:hover, QPushButton#switchBtn:hover, QPushButton#switchTouchBtn:hover, QPushButton#deviceParameterManageBtn:hover{ font-size: 25px; @@ -233,7 +233,7 @@ QPushButton#deviceParameterManageBtn:hover{ } -QPushButton#startProtocolBtn:checked, QPushButton#switchBtn:checked, QPushButton#switchTouchBtn:checked, +QPushButton#profibusStartProtocolBtn:checked, QPushButton#switchBtn:checked, QPushButton#switchTouchBtn:checked, QPushButton#deviceParameterManageBtn:checked{ font-size: 25px; @@ -296,6 +296,7 @@ QPushButton#closeButton, QPushButton#minButton, QPushButton#startActionBtn{ border: none; + } QPushButton#confirmButton, QPushButton#exitButton{ diff --git a/Static/close_black.png b/Static/close_black.png new file mode 100644 index 0000000..8f3c552 Binary files /dev/null and b/Static/close_black.png differ diff --git a/Static/start_green.png b/Static/start_green.png new file mode 100644 index 0000000..27aad33 Binary files /dev/null and b/Static/start_green.png differ diff --git a/UI/Main/Main.py b/UI/Main/Main.py index a7b29e4..f222032 100644 --- a/UI/Main/Main.py +++ b/UI/Main/Main.py @@ -1,7 +1,4 @@ import sys -import time - -# sys.setrecursionlimit(10000) from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.Qt import * @@ -21,7 +18,7 @@ from ..Setting.Setting import SettingWidget from model.ClientModel.Client import Client from utils import Globals from utils.DBModels.InitParameterDB import InitParameterDB -from UI.ProfibusWidgets.MainWindow import ProfibusWindow +from UI.ProfibusWidgets.ProfibusWindow import ProfibusWidgets class CommonHelper: def __init__(self): @@ -68,14 +65,6 @@ class MainWindow(QMainWindow): # 解决报错 self.windowHandle().screenChanged.connect(self.__onScreenChanged) - # 窗体半透明模式 - # QtWin.enableBlurBehindWindow(self) - # self.setWindowFlags(Qt.FramelessWindowHint | - # Qt.WindowMinMaxButtonsHint) - # self.windowEffect.addWindowAnimation(self.winId()) - # self.windowEffect.setAcrylicEffect(self.winId()) - # self.setStyleSheet("background:transparent") - def setupUi(self): self.showMaximized() @@ -96,7 +85,7 @@ class MainWindow(QMainWindow): modbusWidgetList = [self.ModbusTcpMasterWidget, self.ModbusTcpSlaveWidget, self.ModbusRtuMasterWidget, self.ModbusRtuSlaveWidget] modbusNameList = ['MODBUSTCP主站', 'MODBUSTCP从站', 'MODBUSRTU主站', 'MODBUSRTU从站',] - self.profibusWidget = ProfibusWindow() + self.profibusWidget = ProfibusWidgets() self.trendWidget = TrendWidgets() self.SettingWidget = SettingWidget() self.hartWidget = HartWidgets() @@ -113,6 +102,8 @@ 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) @@ -171,9 +162,6 @@ class MainWindow(QMainWindow): return -1 self.rightWidget.setCurrentIndex(index) - # if index in [4, 5]: - # return - # Globals.setValue('SearchWidget', index) def showSetting(self): proType = Globals.getValue('currentProType') @@ -182,40 +170,15 @@ class MainWindow(QMainWindow): return self.SettingWidget.setupUI() self.rightWidget.setCurrentIndex(4) - # elif proType in ['0', '1']: - # if self.exButtonClicked(4) != -1: - # self.SettingWidget.setupUI() - # elif proType in ['2', '3']: - # if self.exButtonClicked(5) != -1: - # self.RtuSettingWidget.setupUI() + def varShow(self): proType = Globals.getValue('currentProType') if proType == -1: return - # elif proType in ['0', '1', '2', '3']: self.exButtonClicked(1) Globals.setValue('SearchWidget', 1) - # elif proType in ['4']: - # self.exButtonClicked(6) - # Globals.setValue('SearchWidget', 6) - # elif proType in ['5']: - # self.exButtonClicked(7) - # Globals.setValue('SearchWidget', 7) - # elif proType in ['6']: - # self.exButtonClicked(8) - # Globals.setValue('SearchWidget', 8) - # elif proType in ['7']: - # self.exButtonClicked(9) - # self.ffWidget.initDevView() - # Globals.setValue('SearchWidget', 9) - # elif proType in ['8']: - # self.exButtonClicked(10) - # Globals.setValue('SearchWidget', 10) - # elif proType in ['9']: - # self.exButtonClicked(11) - # Globals.setValue('SearchWidget', 11) - #枚举参数 + def reFreshTrendWidget(self): proType = Globals.getValue('currentProType') diff --git a/UI/ProfibusWidgets/AreaTabWidget.py b/UI/ProfibusWidgets/AreaTabWidget.py index 6ffa1a6..1027112 100644 --- a/UI/ProfibusWidgets/AreaTabWidget.py +++ b/UI/ProfibusWidgets/AreaTabWidget.py @@ -163,42 +163,34 @@ class AreaWidget(QWidget): self.dataTypeLabel = QLabel('数据类型:') self.dataTypeLabel.setObjectName('dataTypeLabel') - # self.dataTypeLabel.setFixedSize(90, 27) self.dataTypeCombox = QComboBox() self.dataTypeCombox.addItems(['AI', 'AO', 'DI', 'DO']) self.dataTypeCombox.setObjectName('dataTypeCombox') self.dataTypeCombox.currentIndexChanged.connect(self.setByteLineEditValue) - # self.dataTypeCombox.setFixedSize(90, 27) self.dataOrderLabel = QLabel('数据格式:') self.dataOrderLabel.setObjectName('dataOrderLabel') - # self.dataOrderLabel.setFixedSize(90, 27) self.orderCombox = QComboBox() self.orderCombox.addItems(['不转换', '字节转换', '字转换', '字内转换']) self.orderCombox.setObjectName('orderCombox') self.orderCombox.setCurrentIndex(1) - # self.orderCombox.setFixedSize(90, 27) self.byteLineLabel = QLabel('字节长度:') self.byteLineLabel.setObjectName('byteLineLabel') - # self.byteLineLabel.setFixedSize(90, 27) self.byteLineEdit = SoftKeyBoardEdit() self.byteLineEdit.setPlaceholderText('字节长度') self.byteLineEdit.setObjectName('byteLineEdit') - # self.byteLineEdit.setFixedSize(90, 27) + self.okBtn = QPushButton('保存') - # self.okBtn.setFixedSize(90, 27) self.okBtn.setObjectName('okBtn') self.okBtn.setIcon(qtawesome.icon('fa.pencil', color='#4c8cf2')) - # self.okBtn.setIcon(QIcon(':/static/delete.png')) self.okBtn.clicked.connect(self.addAreaWidget) self.okBtnValue = True self.delAreaBtn = QPushButton('删除') self.delAreaBtn.setIcon(QIcon(':/static/delete.png')) self.delAreaBtn.setObjectName('delAreaBtn') - # self.delAreaBtn.setFixedSize(90, 27) self.delAreaBtn.clicked.connect(self.removeAreaTab) hLayout = QHBoxLayout() @@ -208,11 +200,6 @@ class AreaWidget(QWidget): hLayout.addWidget(self.delAreaBtn) hLayout.addWidget(QSplitter()) - - # vlayout = QVBoxLayout() - # vlayout.addWidget(self.pvUpperLimit) - # vlayout.addWidget(self.pvLowerLimit) - # vlayout.addWidget(self.pvUnit) self.leftLayout.addWidget(self.pvUpperLimit, 0, 0, 1, 2) self.leftLayout.addWidget(self.pvLowerLimit, 1, 0, 1, 2) self.leftLayout.addWidget(self.pvUnit,2, 0, 1, 2) @@ -226,7 +213,6 @@ class AreaWidget(QWidget): self.leftLayout.addWidget(QSplitter(),6, 0, 2, 2) self.leftLayout.addLayout(hLayout, 7, 0, 2, 2) self.leftLayout.setContentsMargins(10, 10, 0, 20) - # self.leftLayout.addWidget(self.delAreaBtn, 3, 1, 1, 1) @@ -240,12 +226,8 @@ class AreaWidget(QWidget): self.mainLayout.addLayout(self.rightLayout, 20) self.mainLayout.setSpacing(10) - # self.deviceWidgetManage.addArea(mainLayout=mainLayout, leftLayoutWidget=leftLayoutWidgets) - self.setLayout(self.mainLayout) - - if self.settingValue is not None: self.addAreaWidget() @@ -289,12 +271,6 @@ class AreaWidget(QWidget): self.areaTabWidget.setTabText(index, '通道{}'.format(index+1)) - - - - - - def addAreaWidget(self): curIndex = self.areaTabWidget.currentIndex() #获取左侧配置布局的参数 @@ -320,7 +296,6 @@ class AreaWidget(QWidget): order = self.dataTypeTranslate(self.orderCombox.currentText()) byteLineEdit = self.byteLineEdit.text() - #判断字节长度的输入是否是数字 pattern = re.compile(r'^[1-7]$') match = pattern.match(byteLineEdit) @@ -361,11 +336,7 @@ class AreaWidget(QWidget): self.rightAreaWidgets = RightAreaWidgets(self, order = order, byteLineEdit = byteLineEdit, dataType = dataType, deviceName = deviceName) areaLayout.addWidget(self.rightAreaWidgets) - - self.state = False - - self.rightAreaWidgetState = True areaId = DevicesManange.getAreaID(deviceName) @@ -374,16 +345,13 @@ class AreaWidget(QWidget): self.devicesManange.recalculateAddress() return elif areaId is not None and curIndex in areaId: - # print(areaId,curIndex,2222) DevicesManange.updataAreas(dataType, order, byteLineEdit, deviceName, curIndex) - # print(deviceName, curIndex, dataType, int(byteLineEdit)) self.isRead = self.devicesManange.getDevice(deviceName).editArea(index = curIndex, type = dataType, order = order, bytes = int(byteLineEdit)) - # self.readVarTimer.start(500) else: DevicesManange.addAreas(dataType, order, byteLineEdit, deviceName) self.isRead = self.devicesManange.getDevice(deviceName).addArea(type = dataType, bytes = int(byteLineEdit), order = order, nums = 1) self.devicesManange.recalculateAddress() - # self.readVarTimer.start(500) + diff --git a/UI/ProfibusWidgets/DeviceDialogWidget.py b/UI/ProfibusWidgets/DeviceDialogWidget.py index a2e3a37..c006efe 100644 --- a/UI/ProfibusWidgets/DeviceDialogWidget.py +++ b/UI/ProfibusWidgets/DeviceDialogWidget.py @@ -3,19 +3,16 @@ import sys import re from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtCore import QSize, Qt +from PyQt5.QtCore import Qt from PyQt5.Qt import * -from PyQt5.QtGui import QPixmap, QIcon -from PyQt5.QtWidgets import QHBoxLayout, QAbstractItemView, QVBoxLayout, QSplitter, \ - QApplication, QLabel, QGridLayout, QComboBox, QTextEdit, QCheckBox,QVBoxLayout,QListView, QMainWindow, QStackedWidget, QMessageBox -from PyQt5.QtWidgets import QSizePolicy, QWidget +from PyQt5.QtWidgets import QHBoxLayout, QVBoxLayout, QSplitter, \ + QApplication, QPushButton, QVBoxLayout,QMessageBox +from PyQt5.QtWidgets import QWidget from ctypes import POINTER, cast from ctypes.wintypes import MSG -from PyQt5.QtWinExtras import QtWin - from win32 import win32api, win32gui from win32.lib import win32con from windoweffect.window_effect import WindowEffect diff --git a/UI/ProfibusWidgets/DeviceWidget.py b/UI/ProfibusWidgets/DeviceWidget.py index ef7de29..58b5701 100644 --- a/UI/ProfibusWidgets/DeviceWidget.py +++ b/UI/ProfibusWidgets/DeviceWidget.py @@ -204,6 +204,7 @@ class DeviceTab(QTabWidget): self.devicesManange = devicesManange self.setObjectName('deviceWidget') Globals.setValue(self.dockWidget.windowTitle(), self) + self.tabCloseRequested.connect(self.closeTab) @@ -225,7 +226,7 @@ class DeviceTab(QTabWidget): self.setCornerWidget(self.addDeviceButton) self.setTabsClosable(True) - self.tabCloseRequested.connect(self.closeTab) + self.state = True # Globals.setValue('DeviceTable', self) self.initWidget() @@ -237,7 +238,7 @@ class DeviceTab(QTabWidget): if reply == QMessageBox.Yes: if index != -1: deviceName = self.tabText(index) + self.dockWidget.windowTitle() - # print(deviceName,index,222) + print(deviceName,index,222) self.removeTab(index) self.devicesManange.delDevice(deviceName = deviceName ) DeviceDB.deleteDevice(deviceName = deviceName) @@ -273,23 +274,17 @@ class DeviceTab(QTabWidget): def initWidget(self): alldevices = DevicesManange.getAllDevice() - # alldevices = False - # print(alldevices, 1111) - print(alldevices) titleName = self.dockWidget.windowTitle() if alldevices: for devices in alldevices: deviceName = devices[0] - if titleName in deviceName: # print(devices,333) self.devicesManange.addDevice(proType = devices[1], masterSlaveModel = devices[2], deviceName = devices[0]) self.addDeviceWidget(deviceName=deviceName) self.state = False - else: + if self.state: self.creatInitWidget() - # if self.state: - # self.creatInitWidget() def creatInitWidget(self): widget = QWidget() @@ -310,6 +305,7 @@ class DeviceTab(QTabWidget): self.tabBar().setHidden(True) def switchProject(self): + self.clear() self.initUI() diff --git a/UI/ProfibusWidgets/EditAddressWidget.py b/UI/ProfibusWidgets/EditAddressWidget.py index a49d2ac..e51910b 100644 --- a/UI/ProfibusWidgets/EditAddressWidget.py +++ b/UI/ProfibusWidgets/EditAddressWidget.py @@ -3,19 +3,16 @@ import sys import re from PyQt5 import QtCore, QtGui, QtWidgets -from PyQt5.QtCore import QSize, Qt +from PyQt5.QtCore import Qt from PyQt5.Qt import * -from PyQt5.QtGui import QPixmap, QIcon -from PyQt5.QtWidgets import QHBoxLayout, QAbstractItemView, QVBoxLayout, QSplitter, \ - QApplication, QLabel, QGridLayout, QLineEdit, QComboBox, QTextEdit, QCheckBox,QVBoxLayout,QListView, QMainWindow, QStackedWidget, QMessageBox -from PyQt5.QtWidgets import QSizePolicy, QWidget +from PyQt5.QtWidgets import QHBoxLayout, QPushButton, QVBoxLayout, QSplitter, \ + QApplication, QComboBox, QVBoxLayout, QMessageBox +from PyQt5.QtWidgets import QWidget from ctypes import POINTER, cast from ctypes.wintypes import MSG -from PyQt5.QtWinExtras import QtWin - from win32 import win32api, win32gui from win32.lib import win32con from windoweffect.window_effect import WindowEffect @@ -47,21 +44,6 @@ class EditAddressWidget(QDialog): self.oldAddressEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) self.oldAddressEdit.setObjectName('deviceMesEdit') - # self.oldAddressLabel = QLabel(' 请输入原站地址: ' + str(self.address)) - # self.oldAddressLabel.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - # self.oldAddressLabel.setObjectName('oldAddressLabel') - - # self.pvLowerEdit = QLineEdit() - # self.pvLowerEdit.setPlaceholderText("量程下限") - # self.pvLowerEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - # self.pvLowerEdit.setObjectName('deviceMesEdit') - - # self.pvUnitEdit = QLineEdit() - # self.pvUnitEdit.setPlaceholderText("单位") - # self.pvUnitEdit.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - # self.pvUnitEdit.setObjectName('deviceMesEdit') - - self.confirmButton = QPushButton('确定') self.confirmButton.setObjectName('confirmButton') @@ -93,14 +75,10 @@ class EditAddressWidget(QDialog): self.conVerLayout.addWidget(self.newAddressEdit, 2) self.conVerLayout.addWidget(self.deviceTypeCombox, 2) - # self.conVerLayout.addWidget(self.pvLowerEdit, 1) - # self.conVerLayout.addWidget(self.pvUnitEdit, 1) - # self.conVerLayout.addWidget(QSplitter(), 1) self.conVerLayout.addLayout(self.horizontalLayout, 2) self.conVerLayout.setSpacing(32) self.conVerLayout.setContentsMargins(34, 26, 34, 50) - # self.verticalLayout.addWidget(self.picLabel) self.verticalLayout.addLayout(self.conVerLayout) self.verticalLayout.setSpacing(10) diff --git a/UI/ProfibusWidgets/MainWindow.py b/UI/ProfibusWidgets/ProfibusWindow.py similarity index 95% rename from UI/ProfibusWidgets/MainWindow.py rename to UI/ProfibusWidgets/ProfibusWindow.py index c425338..3e81278 100644 --- a/UI/ProfibusWidgets/MainWindow.py +++ b/UI/ProfibusWidgets/ProfibusWindow.py @@ -69,7 +69,7 @@ def getHwndByPid(pid): -class ProfibusWindow(QWidget): +class ProfibusWidgets(QWidget): def __init__(self): super().__init__() InitParameterDB() @@ -101,10 +101,10 @@ class ProfibusWindow(QWidget): toolbarLayout = QHBoxLayout() self.startProtocolBtn = QPushButton() - self.startProtocolBtn.setObjectName("startProtocolBtn") + self.startProtocolBtn.setObjectName("profibusStartProtocolBtn") # self.startProtocolBtn.setIcon(QIcon(':/static/startProtocol.png')) self.startProtocolBtn.setText('开始通讯') - self.startProtocolBtn.setIcon(QIcon(':/static/start.png')) + self.startProtocolBtn.setIcon(QIcon('Static/start_green.png')) self.startProtocolBtn.setIconSize(QSize(23, 23)) self.startProtocolBtn.setCheckable(True) self.startProtocolBtn.clicked.connect(self.startProtocol) @@ -149,17 +149,17 @@ class ProfibusWindow(QWidget): # 创建按钮 - self.minimizeButton = QPushButton(QIcon(':/static/min.png'), "") - self.minimizeButton.setObjectName('minButton') - self.closeButton = QPushButton(QIcon(':/static/close.png'), "") - self.closeButton.setObjectName('closeButton') + # self.minimizeButton = QPushButton(QIcon(':/static/min.png'), "") + # self.minimizeButton.setObjectName('minButton') + # self.closeButton = QPushButton(QIcon(':/static/close.png'), "") + # self.closeButton.setObjectName('closeButton') - # 按钮点击事件连接 - self.minimizeButton.clicked.connect(self.showMinimized) - self.closeButton.clicked.connect(self.close) - hLayout = QHBoxLayout() - hLayout.addWidget(self.minimizeButton) - hLayout.addWidget(self.closeButton) + # # 按钮点击事件连接 + # self.minimizeButton.clicked.connect(self.showMinimized) + # self.closeButton.clicked.connect(self.close) + # hLayout = QHBoxLayout() + # hLayout.addWidget(self.minimizeButton) + # hLayout.addWidget(self.closeButton) iconLabel = QLabel() pix = QPixmap('static/Hicent.png') @@ -181,7 +181,7 @@ class ProfibusWindow(QWidget): toolbarLayout.addWidget(self.batteryProBar, 1) toolbarLayout.addWidget(self.batteryStateLabel, 1) toolbarLayout.addWidget(QWidget(), 1) - toolbarLayout.addLayout(hLayout, 1) + # toolbarLayout.addLayout(hLayout, 1) toolbarLayout.setSpacing(20) toolbarLayout.setContentsMargins(0, 0, 0, 0) diff --git a/UI/ProfibusWidgets/RightAreaWidget.py b/UI/ProfibusWidgets/RightAreaWidget.py index d1f664a..bbd8b36 100644 --- a/UI/ProfibusWidgets/RightAreaWidget.py +++ b/UI/ProfibusWidgets/RightAreaWidget.py @@ -14,7 +14,7 @@ class ForceButton(QPushButton): self.qualityValueLabel = qualityValueLabel self.qualityLineEdit = qualityLineEdit self.number = number - self.setObjectName('forceBtn') + self.setObjectName('profibusForceBtn') self.setText(btnName) class ForceRadioButton(QRadioButton): diff --git a/bin.py b/bin.py index c051a41..7cf5676 100644 --- a/bin.py +++ b/bin.py @@ -11,7 +11,9 @@ import sys if __name__ == '__main__': app = QApplication(sys.argv) app.setStyle(QStyleFactory.create('Fusion')) - app.setStyleSheet(CommonHelper.readQss('static/main.qss')+ CommonHelper.readQss('static/profibus.qss')) + app.setStyleSheet(CommonHelper.readQss('static/main.qss') + + CommonHelper.readQss('static/profibus.qss') + + CommonHelper.readQss('static/Area.qss')) reg = Register() if not reg.checkLicense(): regWidget = RegisterWidget()