修复切换工程后combox值不刷新及报错bug,修复切换工程后强制颜色不清楚bug

main
ZHANGXUXU\95193 3 months ago
parent f9b9ae6403
commit da7c6de0b9

@ -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)

@ -1,13 +1,15 @@
import typing
import qtawesome
from PyQt5 import QtGui,QtCore,QtWidgets
from PyQt5.QtCore import QAbstractTableModel, QModelIndex, Qt, QVariant, QSize
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget,QMessageBox, QComboBox
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget,QMessageBox
from model.ProjectModel.ProjectManage import ProjectManage
from ..LoginWidgets.LoginWidget import LoginWidget
from utils import Globals
class QPushButton(QtWidgets.QPushButton):
def __init__(self, *__args: any,clicked = None):
super(QPushButton,self).__init__(*__args)
@ -255,13 +257,22 @@ class ProjectButtonDelegate(QItemDelegate):
progress.show()
QtWidgets.QApplication.processEvents()
ProjectManage.switchProject(str(self.parent().model.datas[sender.index[0]][1]))
if not Globals.getValue('switchState'):
pass
else:
Globals.getValue('MainWindows').delecteWidget()
Globals.getValue('MainWindows').createWidgets()
modelLists = ['ModbusTcpMasterTable', 'ModbusTcpSlaveTable', 'ModbusRtuMasterTable', \
'ModbusRtuSlaveTable', 'HartTable', 'TcRtdTable', 'AnalogTable', 'HartSimulateTable', 'userTable']
'ModbusRtuSlaveTable', 'HartTable', 'TcRtdTable', 'AnalogTable', 'HartSimulateTable', 'userTable']
for l in modelLists:
# print(l)
Globals.getValue(l).model.initTable()
QtWidgets.QApplication.processEvents()
Globals.clearValue('forceVars')#清除颜色
profibusTabWidgets = ['DP主站', 'DP从站', 'PA主站', 'PA从站']
for widget in profibusTabWidgets:
Globals.getValue(widget).switchProject()
@ -274,6 +285,8 @@ class ProjectButtonDelegate(QItemDelegate):
self.loginWidget = LoginWidget()
self.loginWidget.show()
Globals.setValue('switchState', True)#用来判断是否是第一次切换
def edit_action(self):
sender = self.sender()

@ -1,16 +1,15 @@
from ast import Mod
from math import comb
import typing
import sys
from numpy import var
import qtawesome
from PyQt5 import QtGui,QtCore,QtWidgets
from PyQt5.QtCore import QAbstractTableModel, QModelIndex, Qt, QVariant, QSize
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget, QMessageBox, QComboBox, QStyleOptionViewItem
from PyQt5.QtWidgets import QItemDelegate, QHBoxLayout, QWidget, QMessageBox, QComboBox
from UI.VarManages.BaseButtonDelegate import BaseButtonDelegate
from sympy import N
# 移除 Celery 相关导入,现在使用 ProtocolManage 和 ModbusManager
@ -64,7 +63,7 @@ class VarTableModel(QAbstractTableModel):
self.checkList = ['Unchecked'] * len(self.datas)
# self.layoutChanged.emit()
self.table.proxy.invalidate()
self.refreshComboBox()
# self.refreshComboBox()
def append_data(self, x):

@ -1,14 +1,13 @@
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QSize, Qt, QTimer
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QSplitter, QPushButton, QFileDialog, QMessageBox, QVBoxLayout
from PyQt5.QtWidgets import QSplitter, QPushButton, QFileDialog, QMessageBox
import qtawesome as qta
from UI.VarManages.VarTable import VarTableView, HartTableView, TcRtdTableView, AnalogTableView, \
HartSimulateTableView, RpcVarTableView
HartSimulateTableView
from UI.VarManages.MessageWidget import MessageWidget
from model.ProjectModel.ProjectManage import ProjectManage
from model.ProjectModel.VarManage import ModbusVarManage
from utils import Globals
# 移除 Celery 相关导入,现在使用 ProtocolManage 和 ModbusManager

@ -315,7 +315,6 @@ class HartVarManage(object):
@classmethod
def editVarModel(self, name, varModel):
name = str(name)
print('修改变量模型',name)
HartVar.update(varModel = str(varModel)).where(HartVar.varName == name).execute()
# 操作后刷新缓存
refreshCache()

Loading…
Cancel
Save