from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import QSize, Qt from PyQt5.QtWidgets import QWidget, QSpacerItem, QHeaderView, QSizePolicy from PyQt5.QtGui import QPixmap, QIcon from Static import static class MainLeft(QWidget): def __init__(self): super(MainLeft, self).__init__() self.setupUi() self.setAttribute(Qt.WA_StyledBackground, True) def setupUi(self): self.createProject = QtWidgets.QPushButton(self) self.createProject.setObjectName("createProject") # self.openProject = QtWidgets.QPushButton(self) # self.openProject.setObjectName("openProject") self.varMag = QtWidgets.QPushButton(self) self.varMag.setObjectName("varMag") self.trendMag = QtWidgets.QPushButton(self) self.trendMag.setObjectName("trendMag") self.userMag = QtWidgets.QPushButton(self) self.userMag.setObjectName("userMag") self.protocolMag = QtWidgets.QPushButton(self) self.protocolMag.setObjectName("protocolMag") self.verticalLayout = QtWidgets.QVBoxLayout(self) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.verticalLayout.setObjectName("verticalLayout") spacerItem = QtWidgets.QSpacerItem(40, 10, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.addWidget(self.createProject) self.verticalLayout.addWidget(QtWidgets.QSplitter()) # self.verticalLayout.addWidget(self.openProject) # self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.addWidget(self.varMag) self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.addWidget(self.trendMag) self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.addWidget(self.userMag) self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.addWidget(self.protocolMag) self.verticalLayout.addWidget(QtWidgets.QSplitter()) self.verticalLayout.setStretch(0, 1) self.verticalLayout.setStretch(1, 4) self.verticalLayout.setStretch(2, 2) self.verticalLayout.setStretch(3, 4) self.verticalLayout.setStretch(4, 2) self.verticalLayout.setStretch(5, 4) self.verticalLayout.setStretch(6, 2) self.verticalLayout.setStretch(7, 4) self.verticalLayout.setStretch(8, 2) self.verticalLayout.setStretch(9, 4) # self.verticalLayout.setStretch(10, 2) # self.verticalLayout.setStretch(11, 4) self.verticalLayout.setStretch(10, 40) QtCore.QMetaObject.connectSlotsByName(self) self.createProject.setText('工程管理') # self.openProject.setText("打开工程") self.varMag.setText("变量管理") self.trendMag.setText("历史趋势") self.userMag.setText("用户管理") self.protocolMag.setText("通讯配置") self.createProject.setIcon(QIcon(':/static/newH.png')) # self.openProject.setIcon(QIcon(':/static/open.png')) self.varMag.setIcon(QIcon(':/static/varMag.png')) self.trendMag.setIcon(QIcon(':/static/trend.png')) self.userMag.setIcon(QIcon(':/static/userMag.png')) self.protocolMag.setIcon(QIcon(':/static/setting.png')) for btn in [self.createProject, self.varMag, self.trendMag, self.userMag, self.protocolMag]: self.setBtn(btn) # self.openProject.clicked.connect(lambda:self.openProject.setIcon(QIcon(':/static/openH.png'))) self.createProject.clicked.connect(lambda:self.createProject.setIcon(QIcon(':/static/newH.png'))) self.varMag.clicked.connect(lambda:self.varMag.setIcon(QIcon(':/static/varMagH.png'))) self.trendMag.clicked.connect(lambda:self.trendMag.setIcon(QIcon(':/static/trendH.png'))) self.userMag.clicked.connect(lambda:self.userMag.setIcon(QIcon(':/static/userMagH.png'))) self.protocolMag.clicked.connect(lambda:self.protocolMag.setIcon(QIcon(':/static/settingH.png'))) self.createProject.setChecked(True) self.createProject.setDown(True) def setBtn(self, btn): btn.setCheckable(True) btn.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred) btn.setAttribute(Qt.WA_Hover,True) btn.installEventFilter(self) btn.setIconSize(QtCore.QSize(26, 26)) btn.clicked.connect(self.clearButton) btn.setAutoExclusive(True) btn.clicked.connect(lambda:btn.setDown(True)) btn.clicked.connect(lambda:btn.setChecked(True)) def eventFilter(self, object, event): if object == self.createProject: if event.type() == QtCore.QEvent.HoverEnter: self.createProject.setIcon(QIcon(':/static/newH.png')) return True if event.type() == QtCore.QEvent.HoverLeave and not self.createProject.isChecked(): self.createProject.setIcon(QIcon(':/static/new.png')) return True # if object == self.openProject: # if event.type() == QtCore.QEvent.HoverEnter: # self.openProject.setIcon(QIcon(':/static/openH.png')) # return True # if event.type() == QtCore.QEvent.HoverLeave and not self.openProject.isChecked(): # self.openProject.setIcon(QIcon(':/static/open.png')) # return True if object == self.varMag: if event.type() == QtCore.QEvent.HoverEnter: self.varMag.setIcon(QIcon(':/static/varMagH.png')) return True if event.type() == QtCore.QEvent.HoverLeave and not self.varMag.isChecked(): self.varMag.setIcon(QIcon(':/static/varMag.png')) return True if object == self.trendMag: if event.type() == QtCore.QEvent.HoverEnter: self.trendMag.setIcon(QIcon(':/static/trendH.png')) return True if event.type() == QtCore.QEvent.HoverLeave and not self.trendMag.isChecked(): self.trendMag.setIcon(QIcon(':/static/trend.png')) return True if object == self.userMag: if event.type() == QtCore.QEvent.HoverEnter: self.userMag.setIcon(QIcon(':/static/userMagH.png')) return True if event.type() == QtCore.QEvent.HoverLeave and not self.userMag.isChecked(): self.userMag.setIcon(QIcon(':/static/userMag.png')) return True if object == self.protocolMag: if event.type() == QtCore.QEvent.HoverEnter: self.protocolMag.setIcon(QIcon(':/static/settingH.png')) return True if event.type() == QtCore.QEvent.HoverLeave and not self.protocolMag.isChecked(): self.protocolMag.setIcon(QIcon(':/static/setting.png')) return True return False def clearButton(self): self.createProject.setDown(False) # self.openProject.setDown(False) self.varMag.setDown(False) self.trendMag.setDown(False) self.userMag.setDown(False) self.protocolMag.setDown(False) self.createProject.setIcon(QIcon(':/static/new.png')) # self.openProject.setIcon(QIcon(':/static/open.png')) self.varMag.setIcon(QIcon(':/static/varMag.png')) self.trendMag.setIcon(QIcon(':/static/trend.png')) self.userMag.setIcon(QIcon(':/static/userMag.png')) self.protocolMag.setIcon(QIcon(':/static/setting.png'))