QSS 全称 Qt Style Sheets(Qt样式表),用于美化Qt程序界面,类似于CSS,但不如CSS强大,选择器和属性较少。
本文主要介绍在PyQt5中使用QSS,但同样适用于C++ Qt,PySide6,PySide2。
本文主要介绍QSS的加载使用以及分享,QSS本身的语法详解请参考官方文档和其他教程。
官方文档
Customizing Qt Widgets Using Style Sheets
官方参考文档才是最官方全面的文档,有时间最好仔细阅读一下。
主要包括:
- 可应用样式表的控件列表
- 属性列表
- 图标列表
- 属性值列表
- 伪类选择器列表
- 子控件控制列表
内容非常多,在此就不展开了。
基本语法
类似CSS,QSS每一条都是由一个选择器和一组声明构成:
选择器选出要对哪种控件进行样式修改,
每个声明都是键值对,键为属性,值为属性值
QSS语法
使用方式
为降低耦合,往往把QSS写在一个单独的style.qss文件中,然后在main.py的QApplication或QMainWindow中加载样式
编写QSS
新建一个扩展名为.qss
的文件,如style.qss,编辑内容。(本文后面有完整的样式主题、QSS编辑器推荐)
把写好的.qss添加到qrc中
加载QSS
创建一个加载QSS样式表的公共类:
1 2 3 4 5 6 7 8 | PYTHON |
在代码中加载qss样式表:
1 2 3 4 5 6 7 8 9 | PYTHON |
QSS 样式分享
Qt 官方例子
Qt官方给出的一些小例子,不一定好看但有很强的学习参考性
Qt-Material
This is another stylesheet for PySide6, PySide2 and PyQt5, which looks like Material Design (close enough).
“一个仿Material的样式,适用于PySide6, PySide2以及PyQt5”
浅色主题演示
深色主题演示
使用这套样式表也非常简单,作者已经打包发布到了pypi,所以我们只需要
1 | SHELL |
安装,并在代码中import即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | PYTHON |
更多详细内容请查阅该项目的README
QDarkStyleSheet
The most complete dark/light style sheet for Qt applications
“最完整的深色/浅色Qt主题”
containers_no_tabs_buttons
containers_no_tabs_buttons1
containers_tabs_displays
widgets_inputs_fields1
也可以通过pip直接安装使用
1 | SHELL |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | PYTHON |
飞扬青云-QSS
在飞扬青云的 QWidgetDemo 项目中的 styledemo 子项目包含了3套很好看的QSS样式
PS黑色
浅蓝色
扁平化白色
GTRONICK-QSS
GTRONICK/QSS: QT Style Sheets templates
一组QSS样式
Ubuntu
MaterialDark
ElegantDark
Aqua
AMOLED
PyDracula
注意! 此项目对应 PySide6 / PyQt6 ,而不是 PyQt5
PyDracula 深色主题
PyDracula 浅色主题
一个现代化的 GUI ,对高 DPI 有更好支持:
Qt Widgets 是一项老技术,对高 DPI 设置没有很好的支持,当您的系统应用 DPI 高于 100% 时,这些图像看起来会失真。 通过在 Qt 模块导入正下方的“main.py”中应用以下代码,您可以使用一种变通方法来最小化此问题。
1 2 3 4 5 | PYTHON |
PyOneDark
和上面的 PyDracula 是同一作者
同样是对应 PySide6 的
PyOneDark
该作者还有一个 Simple_PySide_Base 的仓库,对 PySide2 或 PyQt5 初学者如何创建一个美观的 GUI 程序是不错的参考
PyQt 图标库
QtAwesome
QtAwesome enables iconic fonts such as Font Awesome and Elusive Icons in PyQt and PySide applications.
It started as a Python port of the QtAwesome C++ library by Rick Blommers.
可以通过 conda
或者 pip
安装
1 | SHELL |
1 | SHELL |
QtAwesome 截图
QtAwesome 还附带一个图标浏览器,可以显示所有可用的图标。你可以使用它来搜索适合需求的图标,然后复制应该用于创建该图标的名称到代码中以应用图标
QtAwesome 图标浏览器
QSS 编辑器
如果对上面推荐的这几个主题还不满意,你可以设计自己的QSS,下面推荐一些专用编辑器
QssStylesheetEditor
QssStylesheetEditor 是一个功能强大的 Qt 样式表(QSS)编辑器,支持实时预览,自动提示,自定义变量, 支持预览自定义ui代码,引用QPalette等功能。
程序主界面
自动补全功能
这个软件有如下特点:
- Qss代码高亮,代码折叠
- Qss代码自动提示,自动补全
- 实时预览 Qss 样式效果,可以预览几乎所有的 qtwidget 控件效果
- 支持预览自定义界面代码
- 支持在 Qss 中自定义变量
- 自定义变量可以在颜色对话框中拾取变量的颜色
- 支持通过颜色对话框改变QPalette,并在Qss中引用
- 支持相对路径引用图片,以及引用资源文件中的图片
- 支持切换不同的系统 theme,如 xp 主题,vista 主题等(不同 theme 下 qss 效果会略有差异)
- 能够在 windows,linux,unix 上运行
- 支持多国语言(目前已有中文,英文,俄文翻译)
还有许多强大而实用的功能,可以在README中查看
QSS Editor
🎨 Cross-platform application to edit and preview Qt style sheets (QSS).
跨平台的QSS编辑/预览应用
qsseditor-1
qsseditor-2
Pycharm、VScode 插件
在Pycharm中可以安装 Qt Style Sheet Highlighter 插件,提供对QSS的代码高亮功能
Qt Style Sheet Highlighter
Qt Style Sheet Highlighter 演示
在VScode里可以安装 Qt for Python 插件,该插件不仅支持qss文件的代码高亮,还支持qml、qrc、pro等代码的高亮
Qt for Python
文章转载自:使用QSS美化PyQt5界面 - muzing的杂货铺
感谢作者的分享!