PyQt5 – 改变未选中状态下被按下的单选按钮的颜色

  • Post category:Python

PyQt5是Python的GUI编程工具包,其中包含了很多常用的控件。在PyQt5中,单选按钮是常用的控件之一。在单选按钮被按下时,它的颜色会发生变化。但如果这个单选按钮未被选中,则它的颜色就不会发生变化。本文将介绍如何改变未选中状态下被按下的单选按钮的颜色。

实现方法

在PyQt5中,可以通过设置QSS(Qt样式表)来改变单选按钮的样式。在QSS中,可以使用伪状态(pseudo-state)来定义不同状态下的样式。

伪状态包括以下几种:

  • checked:已选中状态;
  • unchecked:未选中状态;
  • disabled:禁用状态;
  • enabled:启用状态;
  • pressed:按下状态。

通过设置伪状态所对应的样式,实现改变单选按钮样式的目的。

以下是一些示例代码。

示例1

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建单选按钮控件
        self.radioButton = QRadioButton("Hello, PyQt5!")
        self.radioButton.setObjectName("myRadioButton")

        # 设置样式
        qss = """
        QRadioButton::unchecked{
            color: red;
        }

        QRadioButton::checked{
            color: blue;
        }

        QRadioButton::hover{
            background-color: yellow;
        }

        QRadioButton::indicator:checked:hover{
            background-color: green;
            border: 2px solid white;
        }
        """

        self.radioButton.setStyleSheet(qss)

        # 添加单选按钮到窗口中
        self.setCentralWidget(self.radioButton)

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

在该示例代码中,我们通过设置不同伪状态所对应的样式,来改变单选按钮的样式。

  • unchecked:未选中状态,字体颜色为红色。
  • checked:已选中状态,字体颜色为蓝色。
  • hover:鼠标悬停状态,背景颜色为黄色。
  • indicator:checked:hover:已选中状态且鼠标悬停,背景颜色为绿色,边框为白色。

示例2

from PyQt5.QtCore import QCoreApplication, Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QAction, QRadioButton, QApplication, QMainWindow

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        # 创建单选按钮控件
        self.radioButton = QRadioButton("Hello, PyQt5!")
        self.radioButton.setObjectName("myRadioButton")
        self.radioButton.setCheckable(True)
        self.radioButton.setChecked(False)

        # 添加到菜单中
        self.file_menu = self.menuBar().addMenu("File")
        file_open_action = QAction(QIcon("open_file_icon.png"), "Open", self)
        file_open_action.triggered.connect(self.radioButton.toggle)
        self.file_menu.addAction(file_open_action)

        # 设置样式
        qss = """
        QRadioButton::unchecked{
            color: red;
        }

        QRadioButton::checked{
            color: blue;
        }

        QRadioButton::hover{
            background-color: yellow;
        }

        QRadioButton::indicator:checked:hover{
            background-color: green;
            border: 2px solid white;
        }
        """

        self.radioButton.setStyleSheet(qss)

        # 添加单选按钮到窗口中
        self.setCentralWidget(self.radioButton)

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

在该示例代码中,我们创建了一个菜单,并将单选按钮控件添加到菜单中。单选按钮的选中状态通过菜单触发器来控制。

总结

本文介绍了如何通过设置QSS来改变未选中状态下被按下的单选按钮的颜色。通过设置不同伪状态所对应的样式,可以实现不同状态下单选按钮的样式改变。在实际开发中,可以根据实际需求调整样式。