📌  相关文章
📜  PyQt5 – 如何在按下时设置皮肤未选中的 RadioButton 指示器(1)

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

PyQt5 – 如何在按下时设置皮肤未选中的 RadioButton 指示器

在 PyQt5 中,我们可以使用 QRadioButton 控件来创建单选框。这些单选框通常带有一个圆圈用于指示选中状态。在默认情况下,这些圆圈的颜色与系统主题的颜色相同。但是,很多时候我们需要自定义圆圈的颜色。本篇文章将向您展示如何在按下时设置皮肤未选中的 RadioButton 指示器。

准备工作

Python 下载安装

PyCharm 下载安装

PyQt5 安装

步骤
  1. 导入 PyQt5 库
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout
  1. 创建单选框
self.radio_button = QRadioButton("RadioButton")
self.radio_button.toggled.connect(self.on_radio_button_toggle)
  1. 创建皮肤未选中的 RadioButton 指示器
self.default_color = QColor(255, 255, 255, 255)
self.unchecked_color = QColor(200, 200, 200, 255)
  1. 定义 on_radio_button_toggle() 函数
def on_radio_button_toggle(self, checked):
    if not checked:
        self.radio_button.setStyleSheet("QRadioButton::indicator {background-color: %s;}" % self.unchecked_color.name())
    else:
        self.radio_button.setStyleSheet("QRadioButton::indicator {background-color: %s;}" % self.default_color.name())
  1. 完整代码
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPainter, QColor
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QVBoxLayout


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

        self.default_color = QColor(255, 255, 255, 255)
        self.unchecked_color = QColor(200, 200, 200, 255)
        self.initUI()

    def initUI(self):
        self.radio_button = QRadioButton("RadioButton")
        self.radio_button.toggled.connect(self.on_radio_button_toggle)

        layout = QVBoxLayout()
        layout.addWidget(self.radio_button)

        self.setLayout(layout)
        self.setGeometry(100, 100, 300, 200)
        self.show()

    def on_radio_button_toggle(self, checked):
        if not checked:
            self.radio_button.setStyleSheet("QRadioButton::indicator {background-color: %s;}" % self.unchecked_color.name())
        else:
            self.radio_button.setStyleSheet("QRadioButton::indicator {background-color: %s;}" % self.default_color.name())


if __name__ == '__main__':
    app = QApplication([])
    window = Window()
    app.exec_()
结论

在按下单选框时,我们可以根据需要自定义皮肤未选中的 RadioButton 指示器。通过上述步骤,我们可以看到 QRectF 类和 QPainter 类的使用。总而言之,以上方案是在 PyQt5 中访问和使用 QRectF 和 QPainter 类的有效方法之一。