blob: 826a6c1ea1367287d3e3b7bcff4701cbdb9fcfd5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# Qt for Python development environment
Environnement PySide6 (binding Qt officiel) sur Python 3.13, versions
alignées avec le C++ de `~/projects/qt-dev` (Qt 6.11).
## Entrer dans l'environnement
```bash
cd ~/projects/qt-python-dev
nix develop
```
## Lancer les exemples
```bash
python examples/hello_widgets.py # app Widgets (signals/slots)
python examples/hello_quick.py # app QML/Qt Quick
```
Pas de compilation : Python + QML chargé à l'exécution. Itération
instantanée — c'est l'avantage principal sur le C++.
## Outils disponibles
| Commande | Rôle |
|----------|------|
| `designer` | éditeur de fichiers .ui |
| `uic -g python fichier.ui -o ui_fichier.py` | compiler un .ui en module Python |
| `rcc -g python ressources.qrc -o rc.py` | compiler des ressources |
| `linguist` | traduction (.ts) |
| `assistant` | doc offline |
Note : le paquet nixpkgs ne fournit pas les wrappers `pyside6-uic`/
`pyside6-rcc` de PyPI — mais `uic`/`rcc` de qtbase (sur le PATH du
shell) génèrent du Python nativement avec `-g python`, c'est le même
résultat.
Workflow Designer typique : dessiner dans `designer`, générer avec
`uic -g python`, importer la classe générée dans son code.
## Documentation
- Doc Qt offline dans `$QT_DOCS` (enregistrer dans Assistant :
Préférences → Documentation → Ajouter).
- Doc PySide6 spécifique (API Python) : https://doc.qt.io/qtforpython-6/
- La doc C++ reste utile : l'API Python est un mapping quasi 1:1.
## PySide6 vs PyQt6
Les deux sont dans nixpkgs (`python3Packages.pyside6` / `.pyqt6`),
mêmes versions. PySide6 choisi ici : binding **officiel** Qt, licence
LGPL (PyQt6 est GPL/commercial). API quasi identique — migration
triviale dans les deux sens (`Signal` vs `pyqtSignal`, etc.).
## Notes NixOS
- Les **plugins de plateforme** sont trouvés automatiquement (chemins
compilés dans le Qt de nixpkgs), mais **pas les imports QML** : sans
le `QML_IMPORT_PATH` exporté par le shellHook, tout `import QtQuick`
échoue avec « module is not installed ».
- **Ne pas faire `pip install pyside6`** dans un venv sur NixOS : le
wheel PyPI embarque ses propres libs Qt liées contre une glibc/ABI
générique — segfaults et conflits garantis. Toujours passer par
`python3Packages.pyside6`.
- Session Wayland GNOME : fonctionne nativement ; forcer X11 si besoin
avec `QT_QPA_PLATFORM=xcb`.
|