PyQt5之CheckBox美化

你逆着人流朝我走来,我迎着阳光对你说“好久不见”。
—— JvJv

许久未见,小伙伴们有没有想我呢?🤣

今天和亲爱的小伙伴们分享一下关于CheckBox的美化,这个控件用到的场景还是挺多的。如果只说名字,你可能没啥印象,那么请看下面这张图:

看起来效果还是ok的,实现原理也非常简单,其实就是设置CheckBox这个控件2种状态下的图标。说的再直白一点,就是“选中”状态下设置绿色开关图标,“未选中”状态下设置灰色开关图标。

下面那个效果同理,“未选中”状态下是红色锁的图标,“选中”状态下是绿色锁的图标。

有2种方法可以设置,1个是直接在Qt Designer中设置,如下图:

代码如下:

#checkBox{
font-size: 15px;
}

#checkBox::indicator {
padding-top: 1px;
width: 100px;
height: 90px;border: none;
}

#checkBox::indicator:unchecked {
image: url(./image/close.svg);
}

#checkBox::indicator:checked {
image: url(./image/open.svg);
}

需要注意的是,图标是要自己去素材网站找的。下载保存好之后把 image url 后面括号中的路径替换一下就可以了,其它参数根据自己的需要去调整。

在代码中的写法如下,我就不截图了,直接放上完整的代码,核心代码在2条虚线之间:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :main.py
# @Time      :2023/3/8 20:24
# @Author    :JvJv

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QApplication, QStyleFactory

from untitled import Ui_MainWindow


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

        # 设置窗口风格为:Fusion
        QApplication.setStyle(QStyleFactory.create('Fusion'))

        # -------------------------- start ----------------------------------
        self.checkBox.setStyleSheet("#checkBox{\n"
                                    "    font-size: 15px;\n"
                                    "}\n"
                                    "\n"
                                    "#checkBox::indicator {\n"
                                    "    padding-top: 1px;\n"
                                    "    width: 100px;\n"
                                    "    height: 90px;\n"
                                    "    border: none;\n"
                                    "}\n"
                                    "\n"
                                    "#checkBox::indicator:unchecked {\n"
                                    "    image: url(./image/close.svg);\n"
                                    "}\n"
                                    "\n"
                                    "#checkBox::indicator:checked {\n"
                                    "    image: url(./image/open.svg);\n"
                                    "}")

        self.checkBox_2.setStyleSheet("#checkBox_2{\n"
                                      "    font-size: 15px;\n"
                                      "}\n"
                                      "\n"
                                      "#checkBox_2::indicator {\n"
                                      "    padding-top: 1px;\n"
                                      "    width: 100px;\n"
                                      "    height: 90px;\n"
                                      "    border: none;\n"
                                      "}\n"
                                      "\n"
                                      "#checkBox_2::indicator:unchecked {\n"
                                      "    image: url(./image/已锁.svg);\n"
                                      "}\n"
                                      "\n"
                                      "#checkBox_2::indicator:checked {\n"
                                      "    image: url(./image/开锁.svg);\n"
                                      "}")


# -------------------------- end ------------------------------------


if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

美化对于程序中的功能实现来说真的是很简单了,代码行数虽然多,但都很容易理解,大家只要稍许耐心就会用了。后面我会继续更新关于控件美化系列的文章,希望大家能点个关注,不关注点个赞也行🤣

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
PyQt5中,可以通过isChecked()方法来判断复选框是否被选中。如果复选框被选中,可以使用text()方法来获取复选框的文本内容。在给定的代码块中,可以看到通过判断复选框的isChecked()方法来确定是否选中,然后使用text()方法来获取选中的复选框的文本内容。最后,使用QMessageBox.information()方法来弹出一个提示框,显示勾选的所有选择的内容。\[1\] 如果你想在其他地方读取复选框的内容,可以在相应的位置使用isChecked()方法来判断复选框是否被选中,然后使用text()方法来获取复选框的文本内容。这样就可以读取复选框的内容了。\[1\] #### 引用[.reference_title] - *1* [PyQt5之CheckBox复选框的使用(一)](https://blog.csdn.net/qq_41597943/article/details/125554139)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [[ PyQt入门教程 ] PyQt5基本控件使用:单选按钮、复选框、下拉框、文本框](https://blog.csdn.net/weixin_39955423/article/details/111019347)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵呜角角

如果对你有所帮助,哪怕1毛钱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值