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使用rabbitmq实现网络爬虫示例
Feb 20 Python
简单介绍Python中的decode()方法的使用
May 18 Python
编写Python爬虫抓取暴走漫画上gif图片的实例分享
Apr 20 Python
对python中return和print的一些理解
Aug 18 Python
用python 批量更改图像尺寸到统一大小的方法
Mar 31 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
tensorflow 打印内存中的变量方法
Jul 30 Python
PyTorch的深度学习入门之PyTorch安装和配置
Jun 27 Python
python爬虫 urllib模块url编码处理详解
Aug 20 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
python数字图像处理之图像的批量处理
Jun 28 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制作静态网站的模板框架(一)
2006/10/09 PHP
php中实现记住密码自动登录的代码
2011/03/02 PHP
解析PHP获取当前网址及域名的实现代码
2013/06/23 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
Javascript 解疑
2009/11/11 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
学习JavaScript设计模式(代理模式)
2015/12/03 Javascript
jQuery插件DataTable使用方法详解(.Net平台)
2016/12/22 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
json字符串对象转换代码实例
2019/09/28 Javascript
vue实现点击追加选中样式效果
2019/11/01 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python单链表的简单实现方法
2014/09/23 Python
Python Property属性的2种用法
2015/06/21 Python
python下载文件记录黑名单的实现代码
2017/10/24 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
Python利用Xpath选择器爬取京东网商品信息
2020/06/01 Python
基于keras中的回调函数用法说明
2020/06/17 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
文员个人求职自荐信
2013/09/21 职场文书
医学生自荐信范文
2013/12/03 职场文书
元旦标语大全
2014/10/09 职场文书
中国合伙人观后感
2015/06/02 职场文书