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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

Apprendre la création de nouveaux widgets PyQt 4 utilisables par Qt Designer


Sujet :

PyQt Python

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 609
    Points : 188 582
    Points
    188 582
    Par défaut Apprendre la création de nouveaux widgets PyQt 4 utilisables par Qt Designer
    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
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    Salut,

    L'auteur aurait dut profiter de cette mise à jour pour passer à Qt5, non ?

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2013
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2013
    Messages : 156
    Points : 218
    Points
    218
    Par défaut
    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 !

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 298
    Points : 6 778
    Points
    6 778
    Par défaut
    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.

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    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 - Visualiser dans une fenêtre à part
    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 - Visualiser dans une fenêtre à part
    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.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Points : 460
    Points
    460
    Par défaut
    La mise à jour serait en effet la bienvenue
    Sous Kubuntu 20.04

Discussions similaires

  1. Créations de nouveaux modèles pour PySide/PyQt
    Par o.girardot dans le forum Qt
    Réponses: 0
    Dernier message: 04/09/2010, 17h42
  2. Comment lire un fichier DB en cours d'utilisation par 1 autr
    Par jbat dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2004, 12h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo