QGraphicsDropShadowEffect を使用して複数のウィジェットに影を設定したいのですが、以下の例のように、使用したいインスタンスごとに同じコードを何度も何度も書く必要がなく、より良い方法があるかどうか疑問に思っています。setGraphicsEffect()
ウィジェットに設定するだけでよいように、呼び出すクラスまたは何かを作成することは可能ですか? そのためにいくつかのクラスを作成しようとしましたが、それでも 1 つのシャドウを作成することしかできませんでした。
import sys
from PyQt5.QtWidgets import QWidget, QHBoxLayout, \
QGraphicsDropShadowEffect, QPushButton, QApplication, QComboBox
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
layout = QHBoxLayout()
self.shadow = QGraphicsDropShadowEffect()
self.shadow.setBlurRadius(5)
self.shadow.setXOffset(3)
self.shadow.setYOffset(3)
self.shadow2 = QGraphicsDropShadowEffect()
self.shadow2.setBlurRadius(5)
self.shadow2.setXOffset(3)
self.shadow2.setYOffset(3)
self.btn = QPushButton("Button")
self.btn.setGraphicsEffect(self.shadow)
self.combo = QComboBox()
self.combo.setGraphicsEffect(self.shadow2)
layout.addWidget(self.btn)
layout.addWidget(self.combo)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = MainWindow()
w.show()
app.exec_()