📌  相关文章
📜  PyQt5 – 如何在鼠标悬停时将皮肤设置为未选中的 RadioButton 指示器(1)

📅  最后修改于: 2023-12-03 15:03:59.971000             🧑  作者: Mango

PyQt5 – 如何在鼠标悬停时将皮肤设置为未选中的 RadioButton 指示器

在 PyQt5 中,RadioButton 是一种用于启用/禁用单选选项的小部件。当我们选择其中的一个选项时,指示器会变成选中状态。但是,有时候我们需要在鼠标悬停在 RadioButton 上时,将指示器的皮肤设置为未选中状态,以提供更好的用户体验。

Step 1 - 导入库

我们首先需要导入 PyQt5 库和其他必要的模块。

from PyQt5 import QtCore, QtGui, QtWidgets
Step 2 - 创建窗口

在这一步中,我们将创建一个简单的窗口,并在窗口中添加几个 RadioButton。

class Window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        # 创建 RadioButton 和布局
        self.radioButton1 = QtWidgets.QRadioButton("选项1")
        self.radioButton2 = QtWidgets.QRadioButton("选项2")
        self.radioButton3 = QtWidgets.QRadioButton("选项3")
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.radioButton1)
        layout.addWidget(self.radioButton2)
        layout.addWidget(self.radioButton3)

        # 添加布局到窗口
        self.setLayout(layout)
        self.setWindowTitle("窗口标题")
Step 3 - 设置样式表

我们需要为 RadioButton 设置样式表,以便在鼠标悬停时更改指示器的皮肤。在此之前,我们可以先做一个简单的测试,确保 RadioButton 正常工作。

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = Window()
    window.show()
    app.exec_()

此时,我们可以看到三个 RadioButton 在窗口中,并且当选中一个 RadioButton 时,它的指示器会变成选中状态。

Step 4 - 更改样式表

接下来,我们可以继续进行样式表的更改。我们可以通过在样式表中使用伪状态 :hover,来在鼠标悬停时更改 RadioButton 指示器的颜色。

class Window(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()

        # 创建 RadioButton 和布局
        self.radioButton1 = QtWidgets.QRadioButton("选项1")
        self.radioButton2 = QtWidgets.QRadioButton("选项2")
        self.radioButton3 = QtWidgets.QRadioButton("选项3")
        layout = QtWidgets.QVBoxLayout()
        layout.addWidget(self.radioButton1)
        layout.addWidget(self.radioButton2)
        layout.addWidget(self.radioButton3)

        # 添加布局到窗口
        self.setLayout(layout)
        self.setWindowTitle("窗口标题")

        # 更改样式表
        self.radioButton1.setStyleSheet("""
            QRadioButton::indicator:hover {
                border: 2px solid #555;
            }
        """)

在上面的样式表中,我们为 RadioButton 的指示器设置了 :hover 伪状态,当鼠标悬停在 RadioButton 上时,指示器的颜色将改变,并在指示器周围添加一个灰色的边框。

Step 5 - 测试效果

我们现在可以运行我们的代码,测试 RadioButton 在鼠标悬停时的效果。

if __name__ == "__main__":
    app = QtWidgets.QApplication([])
    window = Window()
    window.show()
    app.exec_()

现在,当鼠标悬停在 RadioButton 上时,其指示器的颜色会改变,并且会在指示器周围添加一个灰色的边框。这提供了更好的用户体验,使用户在选择选项时更加明确。