PyQt5 – 当鼠标悬停在单选按钮上时,设置未选中的指标的背景颜色

  • Post category:Python

接下来我将为您详细讲解如何使用PyQt5实现当鼠标悬停在单选按钮上时,设置未选中的指标的背景颜色。

首先,我们需要了解几个类和方法:

  • QRadioButton:单选按钮控件类
  • setStyleSheet():设置控件样式的方法

接下来,我们可以通过以下代码实现当鼠标悬停在单选按钮上时,设置未选中的指标的背景颜色:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication, QRadioButton


class MyRadioButton(QRadioButton):
    def __init__(self, text):
        super().__init__(text)
        self.setStyleSheet("""
            QRadioButton::indicator {
                width: 20px;
                height: 20px;
            }
            QRadioButton::indicator:hover {
                background-color: yellow;
            }
        """)


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

        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('RadioButton Demo')

        rb1 = MyRadioButton('RadioButton 1')
        rb2 = MyRadioButton('RadioButton 2')

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

在上面的代码中,我们创建了一个自定义的单选按钮类MyRadioButton,在这个类中重载了QWidget的setStyleSheet()方法,并通过CSS设置了单选按钮的样式和指标的背景颜色。

然后在主程序中,我们创建了两个MyRadioButton的实例,并在窗口中显示它们。

运行这段代码,当鼠标悬停在未选中的单选按钮上时,未选中的指标的背景颜色会变为黄色。

除了上面的代码之外,我们还可以使用QButtonGroup来实现类似的效果。具体代码如下:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication, QButtonGroup, QRadioButton


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

        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('RadioButton Demo')

        bg = QButtonGroup(self)
        bg.buttonClicked.connect(self.on_button_clicked)

        rb1 = QRadioButton('RadioButton 1')
        rb2 = QRadioButton('RadioButton 2')

        bg.addButton(rb1, 1)
        bg.addButton(rb2, 2)

        hbox = QHBoxLayout()
        hbox.addWidget(rb1)
        hbox.addWidget(rb2)

        self.setLayout(hbox)
        self.show()

    def on_button_clicked(self, id):
        print('Button %d clicked' % id)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

在上面的代码中,我们创建了一个QButtonGroup实例bg,并将两个单选按钮添加到这个实例中。然后,我们使用buttonClicked信号连接on_button_clicked()方法。在这个方法中,我们可以根据按钮的id来确定哪个按钮被单击了。在这个示例中,我们仅仅是打印了按钮的id。

以上就是关于PyQt5中当鼠标悬停在单选按钮上时,设置未选中的指标的背景颜色的使用攻略,希望对您有所帮助。