Python3.9+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
相关产品推荐
相关产品推荐

