鼠标悬停时,背景只在按钮文字后面发生变化,但按钮本身的边框明显变大了。
为什么会发生这种情况,我还没有弄清楚。我想改变按钮的整个背景,就像第二张图片一样(但是,背景必须是纯色的)。
以下是styleSheet按钮:
QPushButton{
background: rgba(0, 0,0,0);
margin: 20, 20, 0, 0
}
QPushButton:hover{
background:rgba(0, 0, 0,30)
}
主文件
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1028, 892)
MainWindow.setAutoFillBackground(False)
MainWindow.setStyleSheet("QWidget{\n"
" color: white;\n"
" background: QLinearGradient(x1: 0, y1: 1, \n"
" x2: 1, y2: 0, \n"
" stop: 0 rgb(170, 85, 255), \n"
" stop: 0.5 rgb(117, 83, 255)\n"
" stop: 1 rgb(221, 24, 255));\n"
"}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralwidget)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setContentsMargins(0, -1, -1, -1)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_5.sizePolicy().hasHeightForWidth())
self.pushButton_5.setSizePolicy(sizePolicy)
self.pushButton_5.setMinimumSize(QtCore.QSize(0, 0))
self.pushButton_5.setBaseSize(QtCore.QSize(0, 0))
self.pushButton_5.setFocusPolicy(QtCore.Qt.StrongFocus)
self.pushButton_5.setLayoutDirection(QtCore.Qt.RightToLeft)
self.pushButton_5.setStyleSheet("QPushButton{\n"
" background: rgba(0,0,0,0);\n"
" margin: 20,20,0,0\n"
"}\n"
"\n"
"QPushButton:hover{\n"
" background:rgba(0,0,0,30)\n"
"}")
self.pushButton_5.setObjectName("pushButton_5")
self.verticalLayout.addWidget(self.pushButton_5)
self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_6.sizePolicy().hasHeightForWidth())
self.pushButton_6.setSizePolicy(sizePolicy)
self.pushButton_6.setStyleSheet("QPushButton{\n"
" background: rgba(0, 0,0,0);\n"
" margin: 20, 20, 0, 0\n"
"}\n"
"\n"
"QPushButton:hover{\n"
" background:rgba(0, 0, 0,30)\n"
"}")
self.pushButton_6.setObjectName("pushButton_6")
self.verticalLayout.addWidget(self.pushButton_6)
self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_8.sizePolicy().hasHeightForWidth())
self.pushButton_8.setSizePolicy(sizePolicy)
self.pushButton_8.setStyleSheet("QPushButton{\n"
" background: rgba(0, 0,0,0);\n"
" margin: 20, 20, 0, 0\n"
"}\n"
"\n"
"QPushButton:hover{\n"
" background:rgba(0, 0, 0,30)\n"
"}")
self.pushButton_8.setObjectName("pushButton_8")
self.verticalLayout.addWidget(self.pushButton_8)
self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.pushButton_9.sizePolicy().hasHeightForWidth())
self.pushButton_9.setSizePolicy(sizePolicy)
self.pushButton_9.setStyleSheet("QPushButton{\n"
" background: rgba(0, 0,0,0);\n"
" margin: 20, 20, 0, 0\n"
"}\n"
"\n"
"QPushButton:hover{\n"
" background:rgba(0, 0, 0,30)\n"
"}")
self.pushButton_9.setObjectName("pushButton_9")
self.verticalLayout.addWidget(self.pushButton_9)
self.frame_2 = QtWidgets.QFrame(self.centralwidget)
self.frame_2.setStyleSheet("QFrame{\n"
" background: rgba(0,0,0,0)\n"
"}")
self.frame_2.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame_2.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame_2.setObjectName("frame_2")
self.verticalLayout.addWidget(self.frame_2)
self.horizontalLayout.addLayout(self.verticalLayout)
self.frame = QtWidgets.QFrame(self.centralwidget)
self.frame.setStyleSheet("QFrame{\n"
" background: rgba(0,0,0,0)\n"
"}")
self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
self.frame.setObjectName("frame")
self.horizontalLayout.addWidget(self.frame)
self.horizontalLayout.setStretch(0, 1)
self.horizontalLayout.setStretch(1, 3)
self.verticalLayout_3.addLayout(self.horizontalLayout)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Адская дрочильня"))
self.pushButton_5.setText(_translate("MainWindow", "PushButton"))
self.pushButton_6.setText(_translate("MainWindow", "PushButton"))
self.pushButton_8.setText(_translate("MainWindow", "PushButton"))
self.pushButton_9.setText(_translate("MainWindow", "PushButton"))


在一个地方定义样式对我来说更方便,所以我
setStyleSheet从表单中删除了所有内容并将样式添加到StyleSheet = """ ... """.并像这样添加它们:
主文件