Есть ли какая-нибудь альтернатива свойству CSS box-shadow в PyQT5?
Подскажите как сделать тень у кнопки на PyQt5.
CSS-свойство box-shadow позволяет добавлять элементу одну или несколько теней, указывая их параметры через запятую. Свойство тени представляет собой описанные смещения по x и y от элемента, радиус размытия и его радиус, а также цвет.
Ответы (1 шт):
Qt StyleSheet - это не CSS, но это технология, реализующая некоторые функции, среди которых нет box-shadow.
Если вы хотите реализовать что-то подобное,
вам следует использовать QGraphicsDropShadowEffect.
Класс QGraphicsDropShadowEffect обеспечивает эффект тени.
Больше https://doc.qt.io/qt-5/qgraphicsdropshadoweffect.html
import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.btn = QPushButton("Button")
self.combo = QComboBox()
layout = QHBoxLayout(self)
layout.addWidget(self.btn)
layout.addWidget(self.combo)
for children in self.findChildren(QWidget):
shadow = QGraphicsDropShadowEffect(blurRadius=5, xOffset=3, yOffset=3)
children.setGraphicsEffect(shadow)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Update
А подскажите как применить только к одному элементу QPushButton?
import sys
from PyQt5.Qt import *
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.btn = QPushButton("Button")
self.combo = QComboBox()
layout = QHBoxLayout(self)
layout.addWidget(self.btn)
layout.addWidget(self.combo)
# for children in self.findChildren(QWidget):
# shadow = QGraphicsDropShadowEffect(blurRadius=5, xOffset=3, yOffset=3)
# children.setGraphicsEffect(shadow)
shadow = QGraphicsDropShadowEffect(blurRadius=5, xOffset=3, yOffset=3)
self.btn.setGraphicsEffect(shadow)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())

