Bonjour,
Effectivement, ce tuto n'est pas nouveau et je ne sais pas pourquoi dourouc05 en parle maintenant. Je l'avais mis à jour pour Python 3 l'année dernière, et il faut maintenant que je le mette à jour pour PyQt5. Ceci d'autant plus que je l'utilise pour PyQt5 depuis un an maintenant. Mais je ne le ferai pas en juin: je suis en camping (
), et je suis sur l'internet de mon téléphone (
)...
Dans la conversion PyQt4 => PyQt5, il y a au moins une modif importante dans le script d'appel du designer: dans le passage des variables d'environnement à QProcess, le format a changé, et il faut maintenant le traiter sous forme de QProcessEnvironment.
Voilà la version que j'utilise actuellement:
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
| #! /usr/bin/python3
# -*- coding: utf-8 -*-
# Python 3 PyQt5
import sys, os
from PyQt5 import (QtWidgets, QtCore)
# lancement de la bibliothèque Qt5
app = QtWidgets.QApplication(sys.argv)
# trouve le répertoire d'exécution du présent programme
repbase = os.path.abspath(os.path.dirname(__file__))
# lit les variables d'environnement
envir = QtCore.QProcessEnvironment().systemEnvironment()
# enregistre dans PYTHONPATH le répertoire des fichiers des widgets
envir.insert('PYTHONPATH', os.path.join(repbase, 'biblio', 'customwidgets', 'widgets'))
# enregistre dans PYQTDESIGNERPATH le répertoire des fichiers des plugins
envir.insert('PYQTDESIGNERPATH', os.path.join(repbase, 'biblio', 'customwidgets', 'plugins'))
# trouve l'adresse du Designer à lancer
designer = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.BinariesPath)
if sys.platform == 'win32':
designer += r'\designer.exe' # Windows
elif sys.platform == 'linux':
designer += '/designer' # Linux
elif sys.platform == 'darwin':
designern += '/Designer.app/Contents/MacOS/Designer' # Mac OS X
else:
pass # autre cas à traiter
# lance Designer dans un nouveau processus avec les variables d'environnement
proc = QtCore.QProcess()
proc.setProcessEnvironment(envir)
proc.start(designer)
proc.waitForFinished(-1)
sys.exit(proc.exitCode()) |
Sous Windows, je rappelle qu'à l'installation de PyQt5 (ou 4), il vient un fichier qt.conf dans le même répertoire que python.exe, qui contient les adresses de PyQt, mais ces adresses sont fausses, et conduisent à des plantages (y compris du script ci-dessus). Les bonnes adresses sont les suivantes sous Windows:
1 2 3 4 5 6
| [Paths]
Prefix = Lib/site-packages/PyQt5
Binaries = .
Libraries = .
Plugins = plugins
Translations = translations |
Je ne crois pas qu'il y ait d'autres modifs importantes de ce tuto concernant PyQt5, mais je regarderai dans les prochains jours.
0 |
0 |