PyQt5 – 未选中状态下被按下的单选按钮的背景图片

如何设置 PyQT5 单选按钮的未选中状态下的背景图片?

1.概述
Pyqt5 可以用 QSS 来实现单选按钮的样式互动。QSS 是一种 CSS 样式表语言的变体,可以设置 PyQt5 窗口上控件的外观。通过QSS,可以让单选按钮实现很多 CSS 中的特效。

2.设置方式
在PyQT5中,通过setStyleSheet()后定义QSS代码,可以设置控件的背景颜色、字体、边框等,其中也包含了控件的状态样式处理。

单选按钮(qRadioButton)有四种状态: 正常态、划过态、按下态、选中态;可以通过查找官方文档,得到其状态值。

可以通过以下代码实现单选按钮在未选中状态下的背景图片:

# 未选中状态下的背景图片
QRadioButton {
    background-image: url(:/radio_normal.png);
    border: none;
}

# 选中状态下的背景图片
QRadioButton:checked {
    background-image: url(:/radio_select.png);
    border: none;
}

# 鼠标移上去的状态下的背景图片
QRadioButton:hover {
    background-image: url(:/radio_hover.png)
}

# 没选中也没划过的状态下的背景图片
QRadioButton:unchecked:hover {
    background-image: url(:/radio_normal.png);
}

在上例中,选中状态下的背景图片是 radio_select.png,这个图片的路径是 PyQt5 工程根目录下。这里需要将图片引用链接到 PyQT5 窗口。

3.示例

下面是一个比较完整的例子:

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

class Example(QWidget):

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

        self.initUI()


    def initUI(self):
        b1 = QRadioButton('Button1',self)
        b1.move(15, 20)

        b2 = QRadioButton('Button2',self)
        b2.move(15, 50)

        b3 = QRadioButton('Button3',self)
        b3.move(15, 80)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('QRadioButton')
        self.setStyleSheet("""
        QRadioButton {
            background-image: url(./unchecked_bg.png);
            border: none;
            width: 13px;
            height: 13px;
        }

        QRadioButton:checked {
            background-image: url(./checked_bg.png);
            border: none;
        }

        QRadioButton:hover {
            background-image: url(./unchecked_bg_hover.png);
        }

        QRadioButton:unchecked:hover {
            background-image: url(./unchecked_bg_hover.png);
        }
        """)
        self.show()


if __name__ == '__main__':

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

在这个例子中,我们创建了三个单选按钮,这三个按钮使用了 QRadioButton 控件。

使用 QSS,我们定义了这个窗口中单选按钮的样式:

QRadioButton {
    background-image: url(./unchecked_bg.png);
    border: none;
    width: 13px;
    height: 13px;
}

QRadioButton:checked {
    background-image: url(./checked_bg.png);
    border: none;
}

QRadioButton:hover {
    background-image: url(./unchecked_bg_hover.png);
}

QRadioButton:unchecked:hover {
    background-image: url(./unchecked_bg_hover.png);
}

这里,并没有一个默认的背景色,我们使用了一个 13x13 的图片来作为控件的背景。

这个例子我们自定义了按钮的一些状态,其中:

  • unchecked_bg.png 是未选中状态下的背景图片;
  • checked_bg.png 是选中状态下的背景图片;
  • unchecked_bg_hover.png 是未选中状态下鼠标悬停状态的背景图片。

这些图片可以自定义设计,实现自定义的单选按钮样式。

运行例子,单击不同的控件,单选按钮会切换背景,展现了不同的样式。可以试着更改及添加一些状态,来理解 QSS 样式表的处理机制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 未选中状态下被按下的单选按钮的背景图片 - Python技术站

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

相关文章

  • PyQt5 – 为选中的单选按钮设置皮肤

    首先需要明确的是,PyQt5是一个用于创建GUI应用程序的Python模块。在PyQt5中,可以使用QWidget部件来创建单选按钮,并通过样式表(StyleSheet)来设置单选按钮的皮肤。 以下是为选中的单选按钮设置皮肤的完整使用攻略: 步骤一:导入PyQt5模块 from PyQt5.QtWidgets import QApplication, QWi…

    python 2023年5月11日
    00
  • PyQt5 QColorDialog – 为子标签设置皮肤

    下面我来详细讲解Python的PyQt5 QColorDialog模块如何用于为子标签设置皮肤的完整使用攻略。 什么是PyQt5 QColorDialog模块 PyQt5 QColorDialog模块提供了一个内置的颜色选择器,可以让用户选择颜色。 如何使用PyQt5 QColorDialog模块 使用PyQt5 QColorDialog模块需要先导入模块:…

    python 2023年5月12日
    00
  • PyQt5 – 为组合框的行编辑部分设置背景色

    在使用PyQt5为组合框的行编辑部分设置背景色之前,需要先介绍一下QComboBox和QLineEdit两个类。 QComboBox类 QComboBox 是一个组合框控件,可以显示一个下拉列表,提供多种选择项。其中包括一个行编辑部分,用户可以在此部分输入内容。在创建 QComboBox 对象时,可以使用如下形式: combo_box = QComboBox…

    python 2023年5月11日
    00
  • PyQt5 QCalendarWidget 从父级映射坐标系

    PyQt5是Python语言下的一款强大的GUI图形界面库,而QCalendarWidget是PyQt5中的日历控件。本篇回答将对如何在PyQt5中使用QCalendarWidget控件的从父级映射坐标系进行详细阐述。 什么是从父级映射坐标系 从父级映射坐标系(Parent-relative coordinate system,简称 PRCS)指的是一个坐标…

    python 2023年5月12日
    00
  • PyQt5 – 设置最大窗口尺寸

    下面是PyQt5设置最大窗口尺寸的使用攻略: 设置最大窗口尺寸的方法 在使用PyQt5创建GUI应用程序时,可以通过设置窗口的最大尺寸来限制用户调整窗口大小的范围。可以使用QWidget.setMaximumSize()或QWidget.setMaximumSize()方法来设置最大尺寸,具体方法如下: widget.setMaximumSize(width…

    python 2023年5月11日
    00
  • PyQt5 – 复选框的isChecked()方法

    一、PyQt5复选框概述 PyQt5是Python语言的一个GUI框架。在PyQt5中,复选框(QCheckBox)是一种常见的控件,用于提供二元选择,即选中或未选中。复选框常常和isChecked()方法一起使用,该方法用于确定复选框的当前选中状态。本文将详细介绍PyQt5中复选框isChecked()方法的使用攻略。 二、复选框isChecked()方法…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 检查它是否是模态小部件

    PyQt5是Python中的一个GUI框架,其中的QSpinBox是一个小部件,可以方便地在GUI程序中展示数字,并且提供了一些检查方法,包括检查是否是模态小部件。下面将详细讲解QSpinBox的完整使用攻略。 PyQt5 QSpinBox简介 QSpinBox是Python PyQt5 中的一个小部件,它是用来展示数字的。它提供了一些方法来控制QSpinB…

    python 2023年5月12日
    00
  • PyQt5 – 多行标签

    下面是关于Python PyQt5中多行标签的完整使用攻略。 什么是多行标签? 多行标签(Multi-line Labels)指的是可以在标签中显示多行文本的控件。 在PyQt5中,可以使用QLabel控件来实现多行标签。 如何创建多行标签? 在PyQt5中,可以使用QLabel控件的setText()方法来设置多行文本内容,并使用setWordWrap(T…

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