PyQt5为控件添加全方向盒阴影,解决QGraphicsDropShadowEffect仅显右下阴影问题
PyQt5 QLabel添加四边阴影效果解决方案
问题原因
QGraphicsDropShadowEffect默认X、Y轴偏移均为正值,阴影仅向控件右下角方向偏移,左上侧无阴影展示- 原代码中控件尺寸远大于父容器,且与父容器边界无预留空间,阴影超出控件范围的部分被父容器裁剪
解决步骤
- 将阴影的X、Y偏移均设置为0,让阴影均匀向四周扩散
- 可自定义阴影颜色和透明度,提升视觉效果
- 调整控件尺寸和位置,保证控件四周与父容器边界留有足够空间容纳阴影
修正后可运行代码
import sys from PyQt5.QtWidgets import QApplication, QGraphicsDropShadowEffect, QWidget, QLabel from PyQt5.QtCore import QRect, Qt from PyQt5.QtGui import QColor def window(): app = QApplication(sys.argv) widget = QWidget() textLabel = QLabel(widget) textLabel.setText("Hello World!") textLabel.setStyleSheet( "background-color: #4C566A; color: #88C0D0; font-size: 30px; font-weight: bold" ) textLabel.setAlignment(Qt.AlignmentFlag.AlignCenter) # 调整label尺寸小于父容器,预留阴影展示空间 textLabel.setGeometry(QRect(60, 50, 200, 100)) effect = QGraphicsDropShadowEffect() effect.setBlurRadius(15) # 核心修改:偏移设为0,阴影向四周均匀扩散 effect.setOffset(0, 0) # 可选:设置阴影颜色和透明度,效果更自然 effect.setColor(QColor(0, 0, 0, 80)) textLabel.setGraphicsEffect(effect) widget.setGeometry(50, 50, 320, 200) widget.setStyleSheet("background-color: #2E3440") widget.setWindowTitle("PyQt5 Example") widget.show() sys.exit(app.exec_()) if __name__ == "__main__": window()
内容的提问来源于stack exchange,提问作者BladeOfLightX
相关产品推荐
相关产品推荐

