PyQt5图形和特效之加载QSS(十)

前言

在Qt中经常需要使用样式,为了降低耦合性(与逻辑代码分离),我们通常会定义一个QSS文件,然后编写各种控件(QLabel,QLIneEdit,QPushButton等)的样式,最后使用QApplication或QMainWindow来加载样式,这样就可以让整个应用程序共享一种样式了

1 编写QSS

首先新建一个扩展名为.qss的文件,如style.qss,然后将其加入资源文件(.qrc)中,在style.qss文件中编写样式代码,例如

QMainWindow{
        border-image:url(./images/screen1.jpg);

}

QToolTip{
        border: 1px solid rgb(45, 45, 45);
        background: white;
        color: red;
}

2 加载QSS

为了方便以后使用,可以编写一个公共类COmmomHelper,其核心代码如下

class CommonHelper:
    def __init__(self):
        pass

    @staticmethod
    def readQss(style):
        with open(style, 'r') as f:
            return f.read()

然后在主函数进行加载,其核心代码如下

app = QApplication(sys.argv)
    win = MainWindow()

    styleFile = './style.qss'
    qssStyle = CommonHelper.readQss(styleFile)
    win.setStyleSheet(qssStyle)

    win.show()
    sys.exit(app.exec_())

在换样式时,不需要全局修改,只需要CommomHelper.readQSS()读取不同的QSS文件即可

3 完整代码如下

注意第一步的qss文件的建立,下面会用到


import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QVBoxLayout, QPushButton


class CommonHelper:
    def __init__(self):
        pass

    @staticmethod
    def readQss(style):
        with open(style, 'r') as f:
            return f.read()

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.resize(477, 258)
        self.setWindowTitle("加载QSS文件")
        btn1 = QPushButton(self)
        btn1.setText('添加')
        btn1.setToolTip('测试提示')
        vbox = QVBoxLayout()
        vbox.addWidget(btn1)

        self.setLayout(vbox)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    win = MainWindow()

    styleFile = './style.qss'
    qssStyle = CommonHelper.readQss(styleFile)
    win.setStyleSheet(qssStyle)

    win.show()
    sys.exit(app.exec_())

没有加载样式时,主窗口时这样事的
这里写图片描述
加载样式后,主窗口是这样事的
这里写图片描述

相关源码及素材
https://download.csdn.net/download/jia666666/10616087

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jia666666

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值