IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Téléchargé 30 fois
Vote des utilisateurs
2 
0 
Détails
Licence : ActiveState Community
Mise en ligne le 19 octobre 2024
Plate-formes : Linux, Mac, Windows
Langue : Français
Référencé dans
Navigation

Convertisseur basique PyQt5 vers PyQt6

M'étant récemment mis à PyQt6, j'ai constaté quelques changements, surtout en ce qui concerne les constantes PyQt5 (exemple Qt.yellow) qui sont devenues énumérations (ici Qt.GlobalColor.yellow).
Ayant un gros paquet de sources à convertir, et vu le nombre de constantes à traiter, j'ai décidé d'écrire un automate convertisseur PyQt5 vers PyQt6 en Python.
L'usage est simple: on lui donne en paramètre le(s) fichier(s) PyQt5 et il crée pour chacun une copie PyQt6.
Il n'est pas forcément complet (je n'y ai mis que ce que j'avais déjà trouvé) mais la table de conversion (un dictionnaire) est facilement évolutive au besoin.

Et en petit bonus, un petit truc rapide que j'avais préalablement créé pour "trouver" une constante Qt5 dans Qt6.
L'usage là ausi est simple: on lui donne en paramètre la(les) constante(s) Qt5 (exemple Qt.yellow) et il donne pour chacune en sortie toutes les constantes Qt6 pouvant correspondre (Qt.GlobalColor.yellow, Qt.GlobalColor.darkYellow, Qt.Key.Key_Yellow)
Avatar de BBellon
Candidat au Club https://www.developpez.com
Le 30/06/2023 à 15:22
On peut compléter cet outil en générant automatiquement un dictionnaire des constantes : [ATTACH]640835d1/a/a/a" />.
Avatar de tyrtamos
Expert éminent https://www.developpez.com
Le 14/09/2022 à 15:06
Bonjour Sve@r

Un grand merci pour avoir fait ce convertisseur! Je ne l'ai pas encore utilisé, mais je me rappelle la conversion PyQt4 => PyQt5 pénible, et j'avais automatisé 90% et le reste à la main.

D'ailleurs, pour faire les dernières corrections à la main quand on a de nombreux fichiers à traiter, il est intéressant d'avoir un programme de recherche multi-fichiers du contenu des fichiers. Par exemple ici, de chercher tous les fichiers qui ont "Qt." (en regex) avec comme résultat pour chaque fichier sélectionné le numéro de ligne et la ligne pour faire les corrections au bon endroit avec un éditeur de texte. Dans certains cas, ce même programme peut faire des modifications automatiques. Par exemple "PyQt5" => "PyQt6" pour tous les fichiers sélectionnés. J'ai fait un tel programme en PyQt5, et ça me fait gagner beaucoup de temps.

A part ça, j'envisage de passer à PyQt6, mais... peut-on installer en même temps PyQt5 et PyQt6?. Je ne pose pas cette question par hasard: j'ai fait une mauvaise expérience quand j'avais installé PySide en même temps que PyQt, et j'avais dû réinstaller Python...
Avatar de papajoker
Expert confirmé https://www.developpez.com
Le 14/09/2022 à 16:43
bonjour

Pour moi, sous linux, pas de problème pour utiliser les 2 (Qt et python installé au niveau system et non en venv)

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
pacman -Qs pyside
local/pyside2 5.15.6-1
    Enables the use of Qt5 APIs in Python applications
local/pyside6 6.3.2-1
    Enables the use of Qt6 APIs in Python applications
local/pyside6-tools 6.3.1-1
    Tools for PySide6

pacman -Q | grep -E '^(qt5|qt6)-base'
  qt5-base 5.15.6+kde+r167-1
  qt6-base 6.3.2-1
par contre, "pyside6-tools 6" remplace "pyside-tools version 2". Donc je ne peux malheureusement pas installer les 2 outils de dev sur la même machine ici, c'est un problème spécifique à ce paquet, je suppose que cela est différent avec d'autres linux...

Code : Sélectionner tout
1
2
3
4
pacman -Qi pyside6-tools
Nom                      : pyside6-tools
Dépend de                : pyside6
Est en conflit avec      : pyside2-tools

----------
merci pour le convertisseur, pas encore testé
Avatar de tyrtamos
Expert éminent https://www.developpez.com
Le 14/09/2022 à 21:26
Je viens d'essayer sur un PC annexe sous Windows 11. Apparemment, les modules de PyQt6 ne se mélangent pas à ceux de PyQt5, ce qui est une bonne nouvelle. Mais je n'ai pas vérifié ailleurs que dans le répertoire des modules (site-packages), et je n'ai rien exécuté.

Cependant, il faudra que j'attende un peu avant de me mettre à PyQt6 à cause d'une incohérence dans les versions (provisoire j'espère).

- Si j'installe PyQt6, il se charge avec la version 6.3.1

- J'installe ensuite PyQt6-WebEngine avec la version 6.3.1

- Mais quand j'installe PyQt6-tools pour avoir QtDesigner, Assistant et Linguist (indispensables), il n'existe pas dans la version 6.3.1, mais seulement 6.1.0. Pendant l'installation, il désinstalle PyQt6 pour le réinstaller dans la version 6.1.0. Mais là, c'est PyQt6-WebEngine qui n'est plus compatible, et en plus, il n'existe pas dans la version 6.1.0.

- En plus, j'utilise beaucoup l'aide de Qt en C++ avec Assistant.exe (beaucoup plus pratique que l'aide en ligne), mais il faut l'ensemble des fichiers d'aide .qch. Avec PyQt5, il y a un module de PyPi qui les amène (PyQtDoc), mais la version PyQt6 n'existe pas encore. La seule manière de les avoir consiste à installer tout Qt6, et c'est une très grosse et longue installation!

Bref, j'attendrai un peu que tout ça soit stabilisé.
Avatar de Sve@r
Expert éminent sénior https://www.developpez.com
Le 14/10/2023 à 13:09
Citation Envoyé par BBellon Voir le message
On peut compléter cet outil en générant automatiquement un dictionnaire des constantes : [ATTACH]640835d1/a/a/a" />.
Désolé du retard mais un SUPER GRAND MERCI pour ce MAGNIFIQUE outil.
Je viens de le tester et c'est GENIAL !!!

En fait je suis revenu mettre à jour mon code (j'ai trouvé d'autres constantes) et donc j'ai vu le commentaire et ton exemple.

Poste-le en tant qu'outil à télécharger, il le mérite !!! Et si tu le fais je mettrai ton lien en commentaire ici...
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.