An unofficial and opinionated project template designed for a quick start with PySide6 and QtQuick.
- Compatible with Python 3.9+
- Supports internationalization, including Right-to-Left User Interfaces
- Leverages the Qt Resource System to compile resources in
data
,i18n
, orqml
into a Python file:data
accessible at:/data
orqrc:/data
i18n
accessible at:/i18n
orqrc:/i18n
qml
accessible at:/qt/qml
orqrc:/qt/qml
- Final build consists solely of Python files
- Preconfigured testing (Python + QML)
- CI setup included
- Client-side window decorations implemented
- No need for Qt Creator; use your preferred text editor
This project requires the use of a virtual environment.
- Prepare the development environment for the specific operating system:
- Execute
just build-develop
to compile resources. - Launch the app by running
python main.py
.
$ just --list
Available recipes:
[build]
build # Build full project into build/release
build-develop # Build and compile resources into source directory
clean # Remove ALL generated files
[i18n]
add-translation locale # Add new language
update-translations # Update *.ts files by traversing the source code
[test]
test # Run Python and QML tests
test-python # Run Python tests
test-qml # Run QML tests
After each modification in the data
, i18n
, or qml
directories, run just build-develop
.
This command will compile all resources into a Python file and place it in the myapp
directory,
which will be accessed on application startup.
- Instructions for adding new languages can be found here.
- Qt6: https://doc.qt.io
- Python: https://www.python.org
- PySide6: https://doc.qt.io/qtforpython/contents.html
- Examples for Qt, QtQuick & Python: https://pypi.org/project/PySide6-Examples/
- QML Coding Conventions: https://doc.qt.io/qt-6/qml-codingconventions.html
- Python & QML: https://doc.qt.io/qtforpython/PySide6/QtQml/index.html
- Scripting: https://doc.qt.io/qt-6/topics-scripting.html
- Importing JavaScript Resources in QML: https://doc.qt.io/qt-6/qtqml-javascript-imports.html
- Packaging on Linux: https://github.com/andyholmes/flatter
-
PySide6: https://pypi.org/project/PySide6
-
PyTest: https://pypi.org/project/pytest
-
App Icon: https://commons.wikimedia.org/wiki/File:Qt_logo_2016.svg
-
Material Icons: https://fonts.google.com/icons?selected=Material+Icons
- Is it exclusively PySide6? Can PyQt6 be used instead of PySide6?
Yes, it should be possible but may require additional work.