You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Qt按钮仅在点击时显示发光效果?

Qt按钮点击时触发发光效果的实现方案

一、优先推荐:QSS样式表实现

直接利用QSS的:pressed伪状态,仅在按钮被点击按压时触发发光效果,无需额外特效对象,实现更轻量简洁:

代码示例

# 为按钮设置QSS样式
self.button1.setStyleSheet("""
    QPushButton:pressed {
        /* 自定义外发光效果:x偏移 y偏移 模糊半径 颜色 */
        box-shadow: 0 0 8px rgba(255, 200, 0, 0.9);
        /* 可选:配合调整按钮背景增强视觉效果 */
        background-color: #f5f5f5;
    }
    /* 正常状态下无发光效果 */
    QPushButton {
        border: 1px solid #ddd;
        padding: 6px 12px;
        background-color: #ffffff;
        border-radius: 4px;
    }
""")

box-shadow参数可按需调整:box-shadow: [x偏移] [y偏移] [模糊半径] [扩展半径] [颜色],比如增大模糊半径可以让发光范围更宽。

二、QGraphicsDropShadowEffect动态触发方案

如果要沿用你当前的特效方案,只需通过按钮的点击信号动态控制特效的显示与隐藏:

代码示例

from PyQt5.QtWidgets import QPushButton, QWidget, QApplication
from PyQt5.QtGui import QGraphicsDropShadowEffect
from PyQt5.QtCore import Qt
import sys

class DemoWidget(QWidget):
    def __init__(self):
        super().__init__()
        self.init_ui()

    def init_ui(self):
        self.button1 = QPushButton("点击触发发光", self)
        self.button1.move(60, 60)

        # 预创建阴影特效,初始不绑定到按钮
        self.shadow = QGraphicsDropShadowEffect()
        self.shadow.setBlurRadius(5)
        self.shadow.setXOffset(6)
        self.shadow.setYOffset(6)
        self.shadow.setColor(Qt.yellow)

        # 绑定点击相关信号与槽函数
        self.button1.pressed.connect(self.show_shadow)
        self.button1.released.connect(self.hide_shadow)

        self.setGeometry(300, 300, 320, 200)
        self.show()

    def show_shadow(self):
        self.button1.setGraphicsEffect(self.shadow)

    def hide_shadow(self):
        self.button1.setGraphicsEffect(None)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = DemoWidget()
    sys.exit(app.exec_())

通过pressed信号触发显示特效,released信号移除特效,实现仅点击按压时显示发光效果。

方案对比

  • QSS方案:代码简洁、性能更优,适合大多数简单发光需求,无需额外信号槽绑定。
  • 特效方案:支持更复杂的阴影参数动态调整,但需要手动管理特效的绑定与解绑。

内容的提问来源于stack exchange,提问作者user20856357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:32:49