python GUI库图形界面开发之PyQt5动态加载QSS样式文件


Posted in Python onFebruary 25, 2020

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

编写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;
}

加载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文件即可

完整代码如下

注意第一步的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_())

没有加载样式时,窗口样式

python GUI库图形界面开发之PyQt5动态加载QSS样式文件

加载样式后,窗口样式

python GUI库图形界面开发之PyQt5动态加载QSS样式文件

本文介绍了如何在窗口运行状态下动态加载QSS样式文件改变窗口样式,更多关于QSS样式的文章请查看下面的相关链接

Python 相关文章推荐
python抓取网页图片示例(python爬虫)
Apr 27 Python
在Python的Django框架下使用django-tagging的教程
May 30 Python
浅析Python中的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
python使用xslt提取网页数据的方法
Feb 23 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
python之生产者消费者模型实现详解
Jul 27 Python
Python中__repr__和__str__区别详解
Nov 07 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
Python gevent协程切换实现详解
Sep 14 Python
python 计算概率密度、累计分布、逆函数的例子
Feb 25 #Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 #Python
python统计函数库scipy.stats的用法解析
Feb 25 #Python
Python Websocket服务端通信的使用示例
Feb 25 #Python
Python GUI库PyQt5样式QSS子控件介绍
Feb 25 #Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 #Python
Python GUI库PyQt5图形和特效样式QSS介绍
Feb 25 #Python
You might like
php通过ksort()函数给关联数组按照键排序的方法
2015/03/18 PHP
javascript的事件描述
2006/09/08 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
2013/06/05 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
2014/06/06 Javascript
使用JavaScript+canvas实现图片裁剪
2015/01/30 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
jQuery购物网页经典制作案例
2016/08/19 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
js实现定时进度条完成后切换图片
2017/01/04 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
分享一款超好用的JavaScript 打包压缩工具
2020/04/26 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
部署Python的框架下的web app的详细教程
2015/04/30 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
Python实现信用卡系统(支持购物、转账、存取钱)
2016/06/24 Python
机器学习10大经典算法详解
2017/12/07 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
python实现获取单向链表倒数第k个结点的值示例
2019/10/24 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
2020/03/28 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
心理学专业毕业生推荐信范文
2013/11/21 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
党员服务承诺书
2014/05/28 职场文书
关于感恩的演讲稿200字
2014/08/26 职场文书
音乐之声音乐广播稿
2014/09/10 职场文书
教师遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
2015年酒店服务员工作总结
2015/05/18 职场文书
导游词之镇江焦山
2019/11/21 职场文书