PyQt5 – 鼠标悬停时单选按钮的背景颜色

  • Post category:Python

下面就为大家介绍一下 Python 中如何使用 PyQt5 实现鼠标悬停时单选按钮的背景颜色。

一、安装 PyQt5

首先需要先安装 PyQt5 模块,可以通过 pip 工具进行安装。在控制台输入以下指令进行安装:

pip install PyQt5

二、创建窗口

在使用 PyQt5 进行 GUI 编程时,需要对窗口进行创建与布局。在这里我们使用 QRadioButton 控件作为单选按钮。下面是一个简单的 Python 程序,在窗口中添加了一个单选按钮控件,以及两个文本标签:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout

class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        vbox = QVBoxLayout(self)

        lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
        vbox.addWidget(lbl)

        rbtn1 = QRadioButton('Python', self)
        rbtn1.toggled.connect(self.changeColor)
        vbox.addWidget(rbtn1)

        rbtn2 = QRadioButton('Java', self)
        rbtn2.toggled.connect(self.changeColor)
        vbox.addWidget(rbtn2)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('单选按钮演示')
        self.show()

    def changeColor(self, state):
        if state == True:
            self.setStyleSheet("background-color: orange;")


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在程序中,定义了一个名为 Example 的类,继承自 QWidget(窗口基类)。在 initUI() 方法中,我们使用了 QVBoxLayout 布局管理器,添加了一个文本标签 lbl 和两个单选按钮 rbtn1rbtn2 。我们通过调用 self.setStyleSheet() 方法来改变窗口的背景颜色。当单选按钮控件的状态被改变时,就会调用 changeColor() 方法,其中通过判断单选按钮控件的状态来改变窗口的背景颜色。

三、示例实现

下面为大家提供两个示例攻略。首先,我们创建一个第一个窗口,包含两个单选按钮控件。当鼠标悬停在不同的单选按钮上时,背景颜色就会发生改变。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout

class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        vbox = QVBoxLayout(self)

        lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
        vbox.addWidget(lbl)

        rbtn1 = QRadioButton('Python', self)
        rbtn1.toggled.connect(self.changeColor1)
        vbox.addWidget(rbtn1)

        rbtn2 = QRadioButton('Java', self)
        rbtn2.toggled.connect(self.changeColor2)
        vbox.addWidget(rbtn2)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('单选按钮演示')
        self.show()

    def changeColor1(self, state):
        if state == True:
            self.setStyleSheet("background-color: orange;")

    def changeColor2(self, state):
        if state == True:
            self.setStyleSheet("background-color: blue;")

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

第二个示例为多个单选按钮控件,当鼠标悬停在不同的单选按钮控件上时,背景颜色也会发生改变。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton, QLabel, QVBoxLayout

class Example(QWidget):

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

        self.initUI()


    def initUI(self):

        vbox = QVBoxLayout(self)

        lbl = QLabel('选择你喜欢的编程语言,悬停时改变颜色', self)
        vbox.addWidget(lbl)

        self.rbtn = []

        for i in range(3):
            self.rbtn.append(QRadioButton('{}'.format(i+1),self))
            self.rbtn[i].toggled.connect(self.changeColor)
            vbox.addWidget(self.rbtn[i])

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('单选按钮演示')
        self.show()

    def changeColor(self, state):
        if state == True:
            sender = self.sender()
            if sender.text() == "1":
                self.setStyleSheet("background-color: orange;")
            elif sender.text() == "2":
                self.setStyleSheet("background-color: blue;")
            else:
                self.setStyleSheet("background-color: green;")


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

以上就是使用 PyQt5 实现鼠标悬停时单选按钮的背景颜色的完整攻略,希望对你有所帮助。