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 相关文章推荐
Django中使用locals()函数的技巧
Jul 16 Python
Python实现约瑟夫环问题的方法
May 03 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
通过Python模块filecmp 对文件比较的实现方法
Jun 29 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python os.fork() 循环输出方法
Aug 08 Python
Python3实现飞机大战游戏
Apr 24 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
代码复现python目标检测yolo3详解预测
May 06 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
2016/09/23 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
javascript new后的constructor属性
2010/08/05 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
2013/10/09 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
Vue+Koa2 打包后进行线上部署的教程详解
2019/07/31 Javascript
[50:28]LGD女子学院第三期 DOTA2复仇之魂教学
2013/12/24 DOTA
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
[48:11]完美世界DOTA2联赛 Magma vs GXR 第二场 11.07
2020/11/10 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
介绍Python的Urllib库的一些高级用法
2015/04/30 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
python3对接mysql数据库实例详解
2019/04/30 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
python实现拼接图片
2020/03/23 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
《社戏》教学反思
2014/04/15 职场文书
委托书的格式
2014/08/01 职场文书
2015年体育部工作总结
2015/04/02 职场文书
通知范文怎么写
2015/04/16 职场文书
婚宴父亲致辞
2015/07/27 职场文书
结婚纪念日感言
2015/08/01 职场文书