📌  相关文章
📜  PyQt5 – 悬停时更改选中状态的单选按钮颜色(1)

📅  最后修改于: 2023-12-03 14:45:50.957000             🧑  作者: Mango

PyQt5 – 悬停时更改选中状态的单选按钮颜色

在 PyQt5 中, 我们可以为单选按钮设置悬停时更改选中状态的颜色, 以增强用户体验.

实现步骤
  1. 导入必要的 PyQt5 模块
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QCursor, QColor
from PyQt5.QtCore import Qt
  1. 创建 QWidget 窗口和单选按钮
app = QApplication([])
window = QWidget()
button = QRadioButton('Radio Button')
  1. 为单选按钮设置样式表
button.setStyleSheet('QRadioButton::indicator:hover:checked { background-color: red; }')
  1. 为单选按钮绑定鼠标进入和鼠标离开事件, 来更改背景色
def on_enter():
    if button.isChecked():
        button.setStyleSheet('QRadioButton::indicator:checked { background-color: red; }')
    else:
        button.setStyleSheet('QRadioButton::indicator:hover { background-color: yellow; }')

def on_leave():
    button.setStyleSheet('QRadioButton::indicator:hover:checked { background-color: red; }')
    button.setStyleSheet('QRadioButton::indicator:checked { background-color: blue; }')

button.enterEvent = on_enter
button.leaveEvent = on_leave
  1. 添加单选按钮到窗口
window.setFixedSize(300, 200)
button.setParent(window)
button.move(100, 50)
window.show()
app.exec_()
注意事项
  • 在样式表中, QRadioButton::indicator:hover:checked 表示鼠标悬停且单选按钮被选中的情况.
  • 在样式表中, QRadioButton::indicator:hover 表示鼠标悬停但单选按钮未被选中的情况.
  • 在样式表中, QRadioButton::indicator:checked 表示单选按钮被选中的情况.
  • 在鼠标进入和离开事件中, button.isChecked() 表示单选按钮当前是否被选中.
  • 鼠标进入和离开事件被绑定到单选按钮的 enterEventleaveEvent 中.
  • 为了更好地展示效果, 我们给窗口设置了固定大小并将单选按钮移动到合适的位置. 在实现中可根据具体需求进行调整.