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

Python3.9+PySide2:如何移除图片上方角落QPushButton的悬停样式?

移除PySide2中QPushButton的悬停样式效果

你之前的代码没生效核心问题是样式选择器写错了——你用了QToolButton::hover,但实际创建的是QPushButton,样式根本没作用到目标按钮上。另外只处理hover状态还不够,得确保按钮在所有状态下的视觉表现一致。

直接修改样式表部分即可解决,以下是修正后的完整代码:

# Corner button
self.corner_btn = QtWidgets.QPushButton(self, flat=True) # 创建按钮
self.corner_btn.setIcon(createIcon("TOP_status_cooked", 50)) # 设置按钮图标
self.corner_btn.setProperty('transparent', True) # 标记按钮为透明属性

# 正确移除悬停样式的代码
self.corner_btn.setFlat(True)
self.corner_btn.setFocusPolicy(Qt.NoFocus)
# 用样式表统一所有状态的背景和边框,彻底消除悬停视觉变化
self.corner_btn.setStyleSheet("""
    QPushButton {
        background-color: transparent;
        border: none; /* 移除按钮边框,避免悬停时出现边框变化 */
    }
    QPushButton::hover {
        background-color: transparent; /* 悬停时保持透明背景 */
        border: none;
    }
    QPushButton::pressed {
        background-color: transparent; /* 按下状态也保持一致(可选) */
        border: none;
    }
""")

关键说明:

  • 把样式选择器改成QPushButton相关的伪状态,确保样式作用到目标按钮
  • 同时设置QPushButton正常状态、::hover悬停状态、::pressed按下状态的背景和边框为透明/无,彻底消除任何状态变化的视觉效果
  • 保留setFlat(True)和setFocusPolicy(Qt.NoFocus)可以进一步避免焦点框等额外视觉干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:40:37