Фон кнопки. при наведении на нее. изменяется не так как задумано
При наведении курсора мыши меняется фон только за текстом кнопки, однако границы самой кнопки явно больше.
Почему так происходит, я не разобрался. Мне нужно, чтобы менялся весь фон кнопки, как на второй картинке (однако фон должен быть однотонным).
Вот styleSheet кнопки:
QPushButton{
background: rgba(0, 0,0,0);
margin: 20, 20, 0, 0
}
QPushButton:hover{
background:rgba(0, 0, 0,30)
}
main.py
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"))
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Мне удобнее определять стили в одном месте, поэтому я убрал все setStyleSheet из формы и прописал стили в StyleSheet = """ ... """.
И добавил их так:
app.setStyleSheet(StyleSheet)
main.py
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1028, 892)
MainWindow.setAutoFillBackground(False)
'''
# или так ----------------------->v <---- точку видите !!! +++
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 1"))
self.pushButton_6.setText(_translate("MainWindow", "PushButton 2"))
self.pushButton_8.setText(_translate("MainWindow", "PushButton 3"))
self.pushButton_9.setText(_translate("MainWindow", "PushButton 4"))
StyleSheet = '''
#MainWindow { /* <---- #MainWindow !!! */
color: white;
background: QLinearGradient(x1: 0, y1: 1,
x2: 1, y2: 0,
stop: 0 rgb(170, 85, 255),
stop: 0.5 rgb(117, 83, 255)
stop: 1 rgb(221, 24, 255));
}
QFrame {
background: rgba(0, 0, 0, 0);
}
/* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv попробуйте раскомментировать шесть строк ниже
#frame {
background: rgba(0, 220, 0, 150);
}
#frame_2 {
background: rgba(220, 0, 0, 150);
}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ */
QPushButton {
background: rgba(0, 0, 0, 0);
margin: 20px, 20px, 0px, 0px;
}
QPushButton:hover {
background: rgba(0, 0, 0, 30);
margin: 0px, 0px, 0px, 0px; /* <---- !!! +++ */
color: white; /* <---- !!! +++ */
}
'''
class MainWindow(QtWidgets. QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyleSheet(StyleSheet)
w = MainWindow()
w.show()
sys.exit(app.exec_())


