mirror of
https://github.com/ColinDuquesnoy/QDarkStyleSheet.git
synced 2026-08-29 16:40:31 +08:00
314 lines
8.2 KiB
ReStructuredText
314 lines
8.2 KiB
ReStructuredText
QDarkStyleSheet
|
|
===============
|
|
|
|
|Build Status| |Docs Status| |Latest PyPI version| |License: MIT|
|
|
|License: CC BY 4.0| |Conduct|
|
|
|
|
The most complete dark/light style sheet for Qt applications (Qt4*, Qt5,
|
|
PySide*, PySide2, PyQt4*, PyQt5, QtPy, PyQtGraph, Qt.Py) for Python
|
|
2*/3 and C++.
|
|
|
|
`Check out the complete documentation. <https://qdarkstylesheet.readthedocs.io/en/latest/screenshots.html>`__
|
|
|
|
|
|
What is new?
|
|
------------
|
|
|
|
|
|
Version 3
|
|
~~~~~~~~~
|
|
|
|
In the current version 3, `qdarkstyle` is now working as a theme framework,
|
|
currently for dark/light themes, keeping styled widgets identical throughout
|
|
theme colors.
|
|
|
|
The palette has been redefined and improved (UI/UX) to accept more colors
|
|
and to be able to implement new themes thanks to the
|
|
`Spyder team <https://github.com/spyder-ide/spyder>`__ collaboration.
|
|
|
|
The current stable version is using Python 3 (preferable 3.6+) and Qt5
|
|
(PyQt5 and PySide 2).
|
|
|
|
We still preparing the portability to Qt6 since we need changes in
|
|
`QtPy <https://github.com/spyder-ide/qtpy>`__ dependency project.
|
|
|
|
[*] Python 2, as well as Qt4 (PyQt4 and PySide), will not be supported anymore.
|
|
They are still there as it is, but no back compatibility, fixes, nor features
|
|
will be implemented.
|
|
|
|
Version 2
|
|
~~~~~~~~~
|
|
|
|
We moved to QtPy to simplify your code in v2.8, thus this is a required
|
|
dependency now. We included special patches in three main categories:
|
|
operating system, Qt/binding version, application.
|
|
|
|
Included in that, lots of widgets' styles were included/fixed. A Qt
|
|
application example (Python only) with almost all types of widgets and
|
|
combinations were included to serve as a portfolio and a checklist for
|
|
new styles.
|
|
|
|
We have added SCSS in v2.7, so the palette can be accessed programmatically.
|
|
Also, many scripts were added to give freedom to developers who want to
|
|
change the colors of our palette. All images and icons were revised, also
|
|
creating SVG files for all of them.
|
|
|
|
In version 2.6 and later, a restructure stylesheet is provided. The
|
|
palette has only 9 colors. Most widgets are revised and their styles
|
|
were improved. We also provide a command line (script) to get info that
|
|
could be used when opening issues. See the image below.
|
|
|
|
|
|
Version 1
|
|
~~~~~~~~~
|
|
|
|
First stable release of QDarkStyle.
|
|
|
|
|
|
Installation
|
|
------------
|
|
|
|
|
|
Python
|
|
~~~~~~
|
|
|
|
From PyPI: Get the latest stable version of ``qdarkstyle`` package using
|
|
*pip* (preferable):
|
|
|
|
.. code:: bash
|
|
|
|
pip install qdarkstyle
|
|
|
|
|
|
From code: Download/clone the project, go to ``qdarkstyle`` folder then:
|
|
|
|
- You can use the *setup* script and pip install.
|
|
|
|
.. code:: bash
|
|
|
|
pip install .
|
|
|
|
|
|
- Or, you can use the *setup* script with Python:
|
|
|
|
.. code:: bash
|
|
|
|
python setup.py install
|
|
|
|
|
|
C++
|
|
~~~
|
|
|
|
- Download/clone the project and copy the following files to your
|
|
application directory (keep the existing directory hierarchy).
|
|
Substitute the **theme** by the currently available (dark/light)
|
|
the theme you need to use.
|
|
|
|
- **qdarkstyle/theme/style.qss**
|
|
- **qdarkstyle/theme/style.qrc**
|
|
- **qdarkstyle/theme/rc/** (the whole directory)
|
|
|
|
|
|
- Add **qdarkstyle/theme/style.qrc** to your **.pro file** as follows:
|
|
|
|
.. code:: c++
|
|
|
|
RESOURCES += qdarkstyle/theme/style.qrc
|
|
|
|
|
|
- Load the stylesheet:
|
|
|
|
.. code:: c++
|
|
|
|
QFile f(":qdarkstyle/theme/style.qss");
|
|
|
|
if (!f.exists()) {
|
|
printf("Unable to set stylesheet, file not found\n");
|
|
}
|
|
else {
|
|
f.open(QFile::ReadOnly | QFile::Text);
|
|
QTextStream ts(&f);
|
|
qApp->setStyleSheet(ts.readAll());
|
|
}
|
|
|
|
|
|
Note: The ":" in the file name is necessary to define that file as a
|
|
resource library. For more information see the discussion
|
|
`here <https://github.com/ColinDuquesnoy/QDarkStyleSheet/pull/87>`__.
|
|
|
|
|
|
Usage in applications
|
|
---------------------
|
|
|
|
|
|
If your project already uses QtPy or you need to set it programmatically,
|
|
it is far more simple
|
|
|
|
.. code:: python
|
|
|
|
import sys
|
|
import qdarkstyle
|
|
import os
|
|
|
|
# set the environment variable to use a specific wrapper
|
|
# it can be set to pyqt, pyqt5, pyside or pyside2 (not implemented yet)
|
|
# you do not need to use QtPy to set this variable
|
|
os.environ['QT_API'] = 'pyqt5'
|
|
|
|
# import from QtPy instead of doing it directly
|
|
# note that QtPy always uses PyQt5 API
|
|
from qtpy import QtWidgets
|
|
|
|
# create the application and the main window
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
window = QtWidgets.QMainWindow()
|
|
|
|
# setup stylesheet
|
|
# the default system in qdarkstyle uses qtpy environment variable
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet())
|
|
|
|
# run
|
|
window.show()
|
|
app.exec_()
|
|
|
|
|
|
If you are using PyQt5 directly, see the complete example
|
|
|
|
.. code:: python
|
|
|
|
import sys
|
|
import qdarkstyle
|
|
from PyQt5 import QtWidgets
|
|
|
|
# create the application and the main window
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
window = QtWidgets.QMainWindow()
|
|
|
|
# setup stylesheet
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
|
|
# or in new API
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyqt5'))
|
|
|
|
# run
|
|
window.show()
|
|
app.exec_()
|
|
|
|
|
|
Here is an example using PySide2
|
|
|
|
.. code:: python
|
|
|
|
import sys
|
|
import qdarkstyle
|
|
from PySide2 import QtWidgets
|
|
|
|
# create the application and the main window
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
window = QtWidgets.QMainWindow()
|
|
|
|
# setup stylesheet
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet_pyside2())
|
|
# or in new API
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api='pyside2'))
|
|
|
|
# run
|
|
window.show()
|
|
app.exec_()
|
|
|
|
|
|
If you use PyQtGraph, then the code is
|
|
|
|
.. code:: python
|
|
|
|
import sys
|
|
import qdarkstyle
|
|
import os
|
|
|
|
# set the environment variable to use a specific wrapper
|
|
# it can be set to PyQt, PyQt5, PySide or PySide2 (not implemented yet)
|
|
os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5'
|
|
|
|
# import from pyqtgraph instead of doing it directly
|
|
# note that PyQtGraph always uses PyQt4 API
|
|
from pyqtgraph.Qt import QtGui
|
|
|
|
# create the application and the main window
|
|
app = QtGui.QApplication(sys.argv)
|
|
window = QtGui.QMainWindow()
|
|
|
|
# setup stylesheet
|
|
app.setStyleSheet(qdarkstyle.load_stylesheet(qt_api=os.environ['PYQTGRAPH_QT_LIB'])
|
|
|
|
# run
|
|
window.show()
|
|
app.exec_()
|
|
|
|
If you are using Qt.py, which is different from qtpy, you should install
|
|
qtpy then set both to the same binding.
|
|
|
|
|
|
Usage of example/portfolio
|
|
--------------------------
|
|
|
|
|
|
There is an example included in the package. You only need to have PySide2 or
|
|
PyQt5 is installed on your system.
|
|
|
|
.. code:: bash
|
|
|
|
# dark theme example
|
|
$ qdarkstyle.example --palette=dark
|
|
|
|
# light theme example
|
|
$ qdarkstyle.example --palette=light
|
|
|
|
# no theme/style sheet applied
|
|
$ qdarkstyle.example --palette=none
|
|
|
|
# check all options included
|
|
$ qdarkstyle.example --help
|
|
|
|
|
|
Changelog
|
|
---------
|
|
|
|
Please, see `CHANGES <CHANGES.rst>`__ file.
|
|
|
|
|
|
License
|
|
-------
|
|
|
|
This project is licensed under the MIT license. Images contained in this
|
|
project is licensed under CC-BY license.
|
|
|
|
For more information see `LICENSE <LICENSE.rst>`__ file.
|
|
|
|
|
|
Authors
|
|
-------
|
|
|
|
For more information see `AUTHORS <AUTHORS.rst>`__ file.
|
|
|
|
|
|
Contributing
|
|
------------
|
|
|
|
Most widgets have been styled. If you find a widget that has not been
|
|
style, just open an issue on the issue tracker or, better, submit a pull
|
|
request.
|
|
|
|
If you want to contribute, see `CONTRIBUTING <CONTRIBUTING.rst>`__ file.
|
|
|
|
.. |Build Status| image:: https://travis-ci.org/ColinDuquesnoy/QDarkStyleSheet.png?branch=master
|
|
:target: https://travis-ci.org/ColinDuquesnoy/QDarkStyleSheet
|
|
.. |Docs Status| image:: https://readthedocs.org/projects/qdarkstylesheet/badge/?version=latest&style=flat
|
|
:target: https://qdarkstylesheet.readthedocs.io
|
|
.. |Latest PyPI version| image:: https://img.shields.io/pypi/v/QDarkStyle.svg
|
|
:target: https://pypi.python.org/pypi/QDarkStyle
|
|
.. |License: MIT| image:: https://img.shields.io/dub/l/vibe-d.svg?color=lightgrey
|
|
:target: https://opensource.org/licenses/MIT
|
|
.. |License: CC BY 4.0| image:: https://img.shields.io/badge/License-CC%20BY%204.0-lightgrey.svg
|
|
:target: https://creativecommons.org/licenses/by/4.0/
|
|
.. |Conduct| image:: https://img.shields.io/badge/code%20of%20conduct-contributor%20covenant-green.svg?style=flat&color=lightgrey
|
|
:target: http://contributor-covenant.org/version/1/4/
|