PyQt5 – 从未选中的复选框为已按下的指示器设置背景图片

要实现从未选中的复选框为已按下的指示器设置背景图片,需要使用PyQt5中的QSS(Qt Style Sheet)来设置样式。以下是详细的使用攻略:

  1. 导入必要的依赖项
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QCheckBox, QApplication
  1. 创建自定义复选框类
class CustomCheckBox(QCheckBox):
    def __init__(self):
        super().__init__()

        # 设置复选框的默认样式
        self.setStyleSheet("QCheckBox::indicator {width: 20px; height: 20px;}");
  1. 重写paintEvent方法
def paintEvent(self, event):
    # 绘制复选框指示器的背景
    if self.isChecked():
        bg_image = QPixmap('checked.png')
    else:
        bg_image = QPixmap('unchecked.png')

    painter = QPainter(self)
    painter.drawPixmap(0, 0, bg_image.width(), bg_image.height(), bg_image)

    # 使用默认的绘制方法
    super().paintEvent(event)
  1. 设置样式表
app = QApplication(sys.argv)
checkbox = CustomCheckBox()
checkbox.setStyleSheet(
    "QCheckBox::indicator:checked {background-color: transparent;}"
    "QCheckBox::indicator:unchecked {background-color: transparent;}"
)

在这里,我们使用了两个样式表来覆盖复选框指示器的背景为透明,否则会和背景图片冲突。

接下来是两个示例说明:

示例1:用PyQt5设置具有背景图片的复选框

app = QApplication(sys.argv)

checkbox = CustomCheckBox()
checkbox.setGeometry(50, 50, 100, 100)
checkbox.show()

app.setStyleSheet(
    "QCheckBox::indicator:checked {background-color: transparent;}"
    "QCheckBox::indicator:unchecked {background-color: transparent;}"
)

sys.exit(app.exec_())

示例2:用PyQt5为复选框应用动画

app = QApplication(sys.argv)

checkbox = CustomCheckBox()
checkbox.setGeometry(50, 50, 100, 100)
checkbox.show()

app.setStyleSheet(
    "QCheckBox::indicator:checked {background-color: transparent;}"
    "QCheckBox::indicator:unchecked {background-color: transparent;}"
    "QCheckBox::indicator:checked {"
    "   border: 0px solid #2f9e99;"
    "   border-radius: 10px;"
    "   background-color: #2f9e99;"
    "   width: 20px;"
    "   height: 20px;"
    "}"
    "QCheckBox::indicator:checked:pressed {"
    "   background-color: #19ad9d;"
    "   border: 1px solid #19ad9d;"
    "}"
    "QCheckBox::indicator:hover {"
    "   border: 2px solid #19ad9d;"
    "}"
)

animation1 = QPropertyAnimation(checkbox, b"geometry")
animation1.setDuration(500)
animation1.setStartValue(QRect(50, 50, 100, 100))
animation1.setEndValue(QRect(150, 50, 100, 100))
animation1.setEasingCurve(QEasingCurve.OutQuad)

animation2 = QPropertyAnimation(checkbox, b"geometry")
animation2.setDuration(500)
animation2.setStartValue(QRect(150, 50, 100, 100))
animation2.setEndValue(QRect(50, 50, 100, 100))
animation2.setEasingCurve(QEasingCurve.InQuad)

animation_group = QSequentialAnimationGroup()
animation_group.addAnimation(animation1)
animation_group.addAnimation(animation2)
animation_group.setLoopCount(-1)
animation_group.start()

sys.exit(app.exec_())

此示例使用了QPropertyAnimation和QSequentialAnimationGroup来实现动画效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 – 从未选中的复选框为已按下的指示器设置背景图片 - Python技术站

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

相关文章

  • PyQt5 QCommandLinkButton – 释放信号

    PyQt5是一个Python绑定Qt库的软件包,提供了一系列Qt库的模块和工具,其中包括QCommandLinkButton类,它是一个带有图标、标签和事例链接的按钮控件。QCommandLinkButton提供了释放信号(released),在用户释放该按钮时被触发。本文将详细讲解如何在PyQt5中使用QCommandLinkButton的释放信号。 完整…

    python 2023年5月12日
    00
  • PyQt5 – 当鼠标悬停时设置复选框指示器的皮肤

    使用 PyQt5 创建 GUI 界面时,我们有时需要调整复选框的样式,比如在鼠标悬停时改变它的指示器皮肤。本文会详细讲解如何实现这个功能,并提供两个示例说明。 1. 安装 PyQt5 要使用 PyQt5 实现复选框功能,首先需要在本地环境中安装 PyQt5 库。可以使用 pip 命令轻易地进行安装: pip install PyQt5 2. 创建 GUI 窗…

    python 2023年5月11日
    00
  • PyQt5 QSpinBox – 获取子区域中的矩形数量

    PyQt5中的QSpinBox控件允许用户通过向上和向下按钮或者键盘按键来选择一个整数。在使用中,我们可以通过该控件中的方法获取子区域中的矩形数量。 以下是详细的使用攻略: 安装PyQt5 首先需要安装PyQt5,在命令行中使用以下命令进行安装: pip install pyqt5 导入模块 使用PyQt5中的QSpinBox控件需要导入QtCore和QtW…

    python 2023年5月12日
    00
  • PyQt5 – 按钮的虚线边界

    下面是Python PyQt5中按钮的虚线边界的完整使用攻略: 1.概述 在PyQt5中,如果按下Tab键时,会将焦点移动到一个新的控件上,同时将当前控件的边框设置为虚线边框(虚线边框也称为焦点矩形)。这个虚线边框是用来指示当前控件拥有焦点,它有助于视觉障碍者了解当前的界面状态。 2.禁用虚线边框 默认情况下,按钮控件会在获取焦点时显示虚线边框。如果需要禁用…

    python 2023年5月10日
    00
  • PyQt5 QSpinBox – 检查子区域是否为NULL

    下面是关于PyQt5 QSpinBox的检查子区域是否为NULL的完整使用攻略。 1. 简介 QSpinBox是一个用于整数值的小部件。它提供一个简单的编辑框和上下箭头按钮,用户可以通过这些按钮增加或减少当前值。 QSpinBox类继承自QAbstractSpinBox类,提供了许多方法和信号来控制和管理小部件的行为。 2. API QSpinBox提供了许…

    python 2023年5月12日
    00
  • PyQt5 – 设置组合框中项目图标的大小

    PyQt5提供了丰富的控件,包括组合框(comboBox)。如果需要为组合框中的项设置图标,可以使用setItemIcon()方法。同时,该方法还提供了设置图标大小的功能。 下面是具体的操作步骤: 1.导入PyQt5.QtGui模块中的QIcon类,用于设置图标大小: from PyQt5.QtGui import QIcon 2.创建组合框并设置项的图标:…

    python 2023年5月11日
    00
  • PyQt5 QComboBox 当它不可编辑和处于开启状态时改变边框样式

    PyQt5 QComboBox的基本用法 在使用PyQt5 QComboBox时,可以将其设置为可编辑或不可编辑状态,同时可以通过style sheet实现不同的外观样式。下面是一个简单的例子: import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QComboBox class …

    python 2023年5月12日
    00
  • PyQt5 QCalendarWidget 获取掩码

    当我们在使用 PyQt5 开发界面时,可能需要使用一些常见的控件,如日历选择控件 QCalendarWidget。在其中,我们可能会需要对 QCalendarWidget 进行限制,让其仅能选择某些特定日期。这时,我们就可以使用 QCalendarWidget 的掩码特性,以筛选可选日期。本文将详细讲解 Python 的 PyQt5 QCalendarWid…

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