PyQt5 – 单选按钮被按下时的背景颜色

  • Post category:Python

下面是关于 Python 中 PyQt5 模块如何使用单选按钮被按下时的背景颜色的完整攻略。

1. PyQt5 单选按钮

首先要了解 PyQt5 中的单选按钮。单选按钮是一种可以在多个选项中仅选择一个的界面元素。在 PyQt5 中,单选按钮是通过 QRadioButton 类实现的。

单选按钮基本属性:

  • text: 单选按钮的标签文本
  • toggled: 当单选按钮的状态改变时(按下或释放),触发该信号
  • setChecked: 设置单选按钮的选中状态
  • isChecked: 检查单选按钮是否被选中

2. 单选按钮被按下时的背景颜色

有时候我们需要在单选按钮被按下时修改其背景颜色,以此来实现更加丰富的交互效果。

实现该功能的方法就是在单选按钮的状态改变时,通过 QPalette 类的 setColor() 方法设置其背景色即可。

示例代码如下:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QRadioButton
from PyQt5.QtGui import QColor, QPalette


class RadioButtonDemo(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        vbox = QVBoxLayout()

        # 创建两个单选按钮
        male = QRadioButton('Male')
        female = QRadioButton('Female')

        # 布局
        vbox.addWidget(male)
        vbox.addWidget(female)

        # 给单选按钮设置背景色
        male.toggled.connect(lambda: self.setBtnBackground(male))
        female.toggled.connect(lambda: self.setBtnBackground(female))

        self.setLayout(vbox)
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('RadioButton Demo')
        self.show()

    # 设置单选按钮的背景色
    def setBtnBackground(self, btn):
        palette = QPalette()
        if btn.isChecked():
            palette.setColor(QPalette.Background, QColor(0, 255, 0))
        else:
            palette.setColor(QPalette.Background, self.window().palette().color(QPalette.Background))
        btn.setPalette(palette)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = RadioButtonDemo()
    sys.exit(app.exec_())

上述代码演示了如何创建两个单选按钮,然后在它们被按下时改变其背景色。当单选按钮 check 时,它的背景色将变成绿色。

3. 总结

本篇攻略详细讲解了如何在 PyQt5 中使用单选按钮被按下时的背景颜色,代码中的注释也方便大家理解相关语法和 API 的含义。