IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Apprendre à créer de nouveaux widgets PyQt 4 utilisables par Qt Designer
Un tutoriel de Jean-Paul Vidal

Le , par dourouc05

87PARTAGES

5  0 
PyQt dispose d'un éditeur visuel d'interfaces graphiques, le Designer. Quelques manipulations assez simples sont nécessaires pour utiliser ses propres widgets dans cet éditeur.

Jean-Paul Vidal propose un tutoriel pour apprendre la création de nouveaux widgets PyQt 4 utilisables par Qt Designer

Retrouvez tous les meilleurs cours et tutoriels pour apprendre PyQT

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de IPreferCSharp
Membre actif https://www.developpez.com
Le 01/06/2016 à 16:23
Salut,

La compatibilité Qt4 - Qt5 pour la plupart des modules est très simple QtGui -> QtWidget, quelques autres classes qui bougent mais rien de bien méchant on s'en sort vite avec la doc.
Par contre QtDesigner -> QtCreator ça a peut-être un peu bouger mais je ne pense pas, j'ai pas encore essayé.
Cependant je pense que ça reste très similaires le gros du changement étant sur les modules QML - QtQuick (pour la partie construction de GUI).

En tout cas bon travail, un tutoriel utile qui va faire des heureux !
3  0 
Avatar de VinsS
Expert éminent https://www.developpez.com
Le 01/06/2016 à 15:03
Salut,

L'auteur aurait dut profiter de cette mise à jour pour passer à Qt5, non ?
1  0 
Avatar de VinsS
Expert éminent https://www.developpez.com
Le 01/06/2016 à 17:05
Le Designer n'est pas spécifique à Qt4 ou Qt5, il produit un xml et on le convertit au choix avec pyuic4 ou pyuic5.

C'est le tuto, qui n'a rien de nouveau d'ailleurs, qui aurait mérité d'être upgradré.

Pour les conversions Qt4-Qt5 ce n'est pas aussi simple que cela, mais, fort heureusement, un gars sympa a écrit un script pour ça.
0  0 
Avatar de tyrtamos
Expert éminent https://www.developpez.com
Le 01/06/2016 à 17:51
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:

Code : Sélectionner tout
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:

Code : Sélectionner tout
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 
Avatar de hizoka
Membre confirmé https://www.developpez.com
Le 01/06/2016 à 18:51
La mise à jour serait en effet la bienvenue
0  0