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 QCalendarWidget 设置焦点代理

    首先,PyQt5是Python编程语言的一组Qt库。Qt是一个用于GUI应用程序开发的跨平台C++框架。其中QCalendarWidget是PyQt5中一个方便易用的日历组件。 在实时应用中,我们经常需要处理与日历相关的任务,比如日期选择、日期范围限制等等。为了更好地使用QCalendarWidget组件,设置焦点代理是一个非常实用的方法。QCalendar…

    python 2023年5月12日
    00
  • PyQt5 QListWidget – 获取调整大小模式属性

    PyQt5是一个基于QT框架的python GUI编程库,可以用于创建各种用户界面应用程序。QListWidget是PyQt5提供的一种控件类型,类似于列表、表格等数据视图控件,可以用于展示和编辑一系列条目。 获取QListWidget的调整大小模式属性是一种常见需求,可以通过以下步骤来实现: 创建QListWidget对象 使用PyQt5的QListWid…

    python 2023年5月13日
    00
  • PyQt5 QCalendarWidget 鼠标抓取器属性

    PyQt5是Python中一款流行的GUI编程工具包,而QCalendarWidget是PyQt5中一个用于选择、显示日期的控件。鼠标抓取器属性(dragEnabled)决定了用户是否可以通过鼠标拖拽实现日期的选择,下面将详细讲解它的完整使用攻略。 1. dragEnabled的使用方法 QCalendarWidget的鼠标抓取器属性dragEnabled的…

    python 2023年5月12日
    00
  • PyQt5 – 如何在鼠标悬停时给选中的单选按钮设置皮肤

    PyQt5是基于Python语言的GUI编程工具包。而要实现在鼠标悬停时给选中的单选按钮设置皮肤,可以按照如下步骤进行: 1. 安装PyQt5 在命令行中输入以下命令: pip install PyQt5 2. 导入相关库 import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import Q…

    python 2023年5月10日
    00
  • PyQt5 – 鼠标悬停时为未选中的复选框设置皮肤

    下面我详细讲解一下Python的“PyQt5 – 鼠标悬停时为未选中的复选框设置皮肤”的完整使用攻略。 问题描述 在使用PyQt5开发界面时,有时候需要为未选中的复选框设置皮肤,使其在鼠标悬停时具有不同的样式。那么该如何实现呢? 解决方法 我们可以通过继承复选框(QCheckbox)类来自定义样式,然后在需要设置皮肤的地方使用自定义的复选框即可。 继承复选框…

    python 2023年5月11日
    00
  • PyQt5 QDateEdit – 名称更改信号

    PyQt5中的QDateEdit控件提供了日期编辑功能,可以用于用户输入日期。QDateEdit控件包含一些信号,可用于检测用户交互事件。其中一个信号是名称更改信号,它在用户更改编辑器中的日期时发出。本文将提供有关如何使用PyQt5 QDateEdit的名称更改信号的完整演示。 Pyqt5中的QDateEdit QDateEdit控件是PyQt5.QtWid…

    python 2023年5月12日
    00
  • PyQt5 QCalendarWidget 设置内容页边距

    针对Python中的“PyQt5 QCalendarWidget设置内容页边距”的完整使用攻略,我将从以下三个方面进行讲解: PyQT5 QCalendarWidget介绍 QCalendarWidget是一个日历控件,它允许用户选择一个日期,并且可以将其嵌入到Python GUI应用程序中。在这个控件中,我们可以使用一些方法和信号来定制和处理日历控件。 设…

    python 2023年5月12日
    00
  • PyQt5 – 进度条的背景图片

    使用PyQt5实现进度条的背景图片需要使用QProgressBar控件。该控件可以在进度条的背景中放置图片或自定义的界面,提高用户体验。 以下是实现进度条背景图片的完整使用攻略: 前置条件 在深入讲解过程之前,需要确保您的系统中已经安装了Python和PyQt5。 步骤一:导入QProgressBar控件 首先需要在Python文件头部导入QProgress…

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