PyQt 主题设置(对界面进行美化)

实现效果:

  1. 主题切换
  2. 在下次打开后,适配历史主题
  3. 主题内容包括:背景、控件样式

实现原理:

使用ui编辑界面,我们常用右边的属性栏styleSheet来编辑此控件的样式表内容实现单个控件样式的编辑,而实现主题的切换,实质是批量对所有控件进行样式编辑,这种方法就适用于内容较多,且不方便在程序中编写

实现过程:

我们将所需控件的属性通过编写.Qss文件(也可以直接找现成的)。

在编写多个主题后,加入需适配的界面文件。

下拉框遍历读取主题,读取内容进行主题设置

设置主题,建立历史记忆。

代码分享:

主题文件结构为:

--style

        --QSS-master

                --主题1.qss

                --主题2.qss

        --QSS-now

                --NOW.qss

代码:

self.SET()#主题检测

# 初始化主题下拉框
Drop_downBoxContent = self.get_path_file()
for i in Drop_downBoxContent:  # 遍历添加
    self.comboBox.addItem(i)
# 获取内容进行主题设置
self.comboBox.currentTextChanged.connect(self.setstyles)

def SET(self):
    """
    设置初始量
    :return:
    """
    # 检测设置是否被更新
    b = os.path.exists("./style/QSS-now/NOW.qss")#主题
    if b == True:
        # 1、QSS直接导
        style_file = "./style/QSS-now/NOW.qss"
        # 2、读取样式文件内容
        with open(style_file, "r", encoding="UTF-8") as file:
            # 3、加载读取的样式内容
            self.style_sheet = file.read()
            # 4、完成设置
            self.setStyleSheet(self.style_sheet)
            self.style = self.style_sheet


def setstyles(self):
    """
    设置主题风格
    """
    style = self.comboBox.currentText()
    # 地址拼接
    self.file_address = "./style/QSS-master/" + style + r".qss"
    # 主题设置
    # 1、QSS直接导
    style_file = self.file_address
    # 2、读取样式文件内容
    with open(style_file, "r", encoding="UTF-8") as file:
        # 3、加载读取的样式内容
        self.style_sheet = file.read()
        # 4、完成设置
        self.setStyleSheet(self.style_sheet)
        # 5、建立历史记忆
        self.file_usering = "./style/QSS-now/" + "NOW" + r".qss"
        shutil.copyfile(self.file_address, self.file_usering)

辅助工具:

编写qss工具:QssStylesheetEditor

QSS是来源于CSS,算是Qt定制版的一个CSS子集,可参考

深入了解CSS:CSS 教程

现成qss:

使用QSS美化PyQt界面,分享6套超赞皮肤 - muzing的文章 - 知乎 https://zhuanlan.zhihu.com/p/390192953

学习过程记录,如有问题,望指正(手动鞠躬)!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值