📅  最后修改于: 2023-12-03 15:03:59.971000             🧑  作者: Mango
在 PyQt5 中,RadioButton 是一种用于启用/禁用单选选项的小部件。当我们选择其中的一个选项时,指示器会变成选中状态。但是,有时候我们需要在鼠标悬停在 RadioButton 上时,将指示器的皮肤设置为未选中状态,以提供更好的用户体验。
我们首先需要导入 PyQt5 库和其他必要的模块。
from PyQt5 import QtCore, QtGui, QtWidgets
在这一步中,我们将创建一个简单的窗口,并在窗口中添加几个 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("窗口标题")
我们需要为 RadioButton 设置样式表,以便在鼠标悬停时更改指示器的皮肤。在此之前,我们可以先做一个简单的测试,确保 RadioButton 正常工作。
if __name__ == "__main__":
app = QtWidgets.QApplication([])
window = Window()
window.show()
app.exec_()
此时,我们可以看到三个 RadioButton 在窗口中,并且当选中一个 RadioButton 时,它的指示器会变成选中状态。
接下来,我们可以继续进行样式表的更改。我们可以通过在样式表中使用伪状态 :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 上时,指示器的颜色将改变,并在指示器周围添加一个灰色的边框。
我们现在可以运行我们的代码,测试 RadioButton 在鼠标悬停时的效果。
if __name__ == "__main__":
app = QtWidgets.QApplication([])
window = Window()
window.show()
app.exec_()
现在,当鼠标悬停在 RadioButton 上时,其指示器的颜色会改变,并且会在指示器周围添加一个灰色的边框。这提供了更好的用户体验,使用户在选择选项时更加明确。