PyQt5 – 如何在鼠标悬停时给选中的单选按钮设置皮肤

PyQt5是基于Python语言的GUI编程工具包。而要实现在鼠标悬停时给选中的单选按钮设置皮肤,可以按照如下步骤进行:

1. 安装PyQt5

在命令行中输入以下命令:

pip install PyQt5

2. 导入相关库

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

3. 创建GUI界面

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 300, 200)
        self.setWindowTitle('选项按钮皮肤设置')

        self.btnGroup = QButtonGroup(self)
        self.btnGroup.buttonClicked[int].connect(self.on_btn_clicked)

        self.blueButton = QRadioButton('蓝色', self)
        self.btnGroup.addButton(self.blueButton, 1)
        self.blueButton.setGeometry(20, 50, 80, 30)

        self.redButton = QRadioButton('红色', self)
        self.btnGroup.addButton(self.redButton, 2)
        self.redButton.setGeometry(120, 50, 80, 30)

        self.yellowButton = QRadioButton('黄色', self)
        self.btnGroup.addButton(self.yellowButton, 3)
        self.yellowButton.setGeometry(220, 50, 80, 30)

        self.show()

该界面包含了三个单选按钮,分别是蓝色、红色和黄色。

4. 编写鼠标悬停事件

    def on_btn_clicked(self, id):
        if id == 1:
            self.blueButton.setStyleSheet("QRadioButton::indicator {background-color : blue;}")
        elif id == 2:
            self.redButton.setStyleSheet("QRadioButton::indicator {background-color : red;}")
        elif id == 3:
            self.yellowButton.setStyleSheet("QRadioButton::indicator {background-color : yellow;}")

    def enterEvent(self, event):
        btnId = self.btnGroup.checkedId()
        if btnId == 1:
            self.blueButton.setStyleSheet("QRadioButton::indicator {background-color : #a0c1f5;}")
        elif btnId == 2:
            self.redButton.setStyleSheet("QRadioButton::indicator {background-color : #ff8080;}")
        elif btnId == 3:
            self.yellowButton.setStyleSheet("QRadioButton::indicator {background-color : #fff68f;}")

在该函数中,首先会判断选中的单选按钮是哪个,从而设置对应的样式。其次,监测到鼠标悬停事件时,会获取当前选中的单选按钮的id,并设置对应的样式。

5. 运行程序

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

完整代码如下:

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

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(100, 100, 300, 200)
        self.setWindowTitle('选项按钮皮肤设置')

        self.btnGroup = QButtonGroup(self)
        self.btnGroup.buttonClicked[int].connect(self.on_btn_clicked)

        self.blueButton = QRadioButton('蓝色', self)
        self.btnGroup.addButton(self.blueButton, 1)
        self.blueButton.setGeometry(20, 50, 80, 30)

        self.redButton = QRadioButton('红色', self)
        self.btnGroup.addButton(self.redButton, 2)
        self.redButton.setGeometry(120, 50, 80, 30)

        self.yellowButton = QRadioButton('黄色', self)
        self.btnGroup.addButton(self.yellowButton, 3)
        self.yellowButton.setGeometry(220, 50, 80, 30)

        self.show()

    def on_btn_clicked(self, id):
        if id == 1:
            self.blueButton.setStyleSheet("QRadioButton::indicator {background-color : blue;}")
        elif id == 2:
            self.redButton.setStyleSheet("QRadioButton::indicator {background-color : red;}")
        elif id == 3:
            self.yellowButton.setStyleSheet("QRadioButton::indicator {background-color : yellow;}")

    def enterEvent(self, event):
        btnId = self.btnGroup.checkedId()
        if btnId == 1:
            self.blueButton.setStyleSheet("QRadioButton::indicator {background-color : #a0c1f5;}")
        elif btnId == 2:
            self.redButton.setStyleSheet("QRadioButton::indicator {background-color : #ff8080;}")
        elif btnId == 3:
            self.yellowButton.setStyleSheet("QRadioButton::indicator {background-color : #fff68f;}")

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

在该程序中,我们实现了在鼠标悬停时给选中的单选按钮设置不同的皮肤。我们演示了三种皮肤:蓝色、红色和黄色。同时,我们通过继承QWidget类,并使用该类的enterEvent函数,实现了鼠标悬停事件的判断。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 如何在鼠标悬停时给选中的单选按钮设置皮肤 - Python技术站

(0)
上一篇 2023年5月10日
下一篇 2023年5月10日

相关文章

  • PyQt5 – 在鼠标悬停时为不可编辑的组合框的行编辑部分设置背景色

    下面我会详细讲解如何在鼠标悬停时为不可编辑的组合框的行编辑部分设置背景色,并提供两个示例。 使用PyQt5设置不可编辑的组合框行编辑部分的背景色 PyQt5是Python中开发图形用户界面(GUI)的工具包,通过使用它,可轻松创建应用程序和游戏,包括桌面应用程序、视频游戏、Web游戏等。在PyQt5中,可以使用QComboBox控件实现组合框控件(即下拉框)…

    python 2023年5月10日
    00
  • PyQt5 – 乱码字游戏

    下面是Python的“PyQt5 – 乱码字游戏”的完整使用攻略。 简介 PyQt5是Python的一个GUI开发框架,可以用来创建窗口和各种控件,并提供了处理用户输入和输出的方法。本教程将介绍如何使用PyQt5创建一个乱码字游戏,以展示PyQt5的使用方法。 环境准备 安装Python3.6或更高版本; 安装PyQt5模块,可以使用pip命令安装,如下所示…

    python 2023年5月10日
    00
  • PyQt5 – 悬停时为复选框设置背景图片

    以下是Python的PyQt5中如何为悬停时的复选框设置背景图片的完整使用攻略。 简介 PyQt5是Python编程语言和Qt库的结合。它使开发人员能够使用Python编写复杂的GUI应用程序,该库能够处理许多常见的GUI组件,比如单选框、复选框等等。这里将解释如何在Python的PyQt5中为悬停时的复选框设置背景图片。 实现步骤 导入所需的库文件: fr…

    python 2023年5月11日
    00
  • PyQt5 QCalendarWidget 获取背景角色

    接下来我将详细讲解Python中PyQt5库中的QCalendarWidget组件如何获取背景角色,并提供两个示例说明。 1. Qt的背景角色 在Qt中,提供了一些预定义的背景角色,它们用于指定不同的绘制场景。如下表所示: 背景角色 描述 QPalette.Window 普通窗口的背景色 QPalette.WindowText 普通窗口上文本的颜色 QPal…

    python 2023年5月12日
    00
  • PyQt5 QSpinBox – 获取整个文本

    PyQt5是Python的一个GUI框架,提供了一系列的控件,包括 QSpinBox。QSpinBox 是一个输入数字的控件, 用户可以通过滚动或手动输入来改变数值。在很多情况下,我们需要获取 QSpinBox 控件中的整数,这就需要用到获取整个文本的方法。 PyQt5 QSpinBox-获取整个文本 要获取 QSpinBox 的整个文本,可以使用其 tex…

    python 2023年5月12日
    00
  • PyQt5 QDockWidget – 获取样式表

    PyQt5是一个广受欢迎的Python GUI库,它提供了丰富的组件和功能。其中QDockWidget是一个非常有用的组件,它允许我们将窗口附加到主窗口的其它部分。在此基础上,我们需要了解如何获取样式表,以此来进一步定制美化我们的窗口。 获取QDockWidget样式表 获取QDockWidget样式表可以通过两种方式,一种是在Qt Designer中设置样…

    python 2023年5月12日
    00
  • PyQt5 QComboBox 设置鼠标跟踪

    下面是PyQt5 QComboBox设置鼠标跟踪的完整使用攻略。 简介 在PyQt5中,我们可以使用QComboBox控件来创建下拉式选择框。如果需要添加鼠标跟踪功能,可以使用QComboBox的setMouseTracking()方法。该方法允许我们设置QComboBox是否接收鼠标跟踪事件。 语法 以下是setMouseTracking()方法的语法: …

    python 2023年5月12日
    00
  • PyQt5 QSpinBox – 获取背景角色

    下面是Python的PyQt5库中QSpinBox控件获取背景角色的完整使用攻略。 1.前置知识 在介绍QSpinBox如何获取背景角色之前,需要对以下知识点有一定的了解: PyQt5的基础知识 QSpinBox控件的基本使用方法 如果对PyQt5和QSpinBox不熟悉,可以先去学习一下相关的基础知识。接下来,我们将详细讲解如何获取QSpinBox的背景角…

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部