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 :

Nouveau sur le dev python et GUI avec PyQt5


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut Nouveau sur le dev python et GUI avec PyQt5
    Bonjour,

    Je débute en développement sur python et j'en ai déjà acquis quelques bases.
    En gros, j'ai l'idée générale sur les différents concepts du procédural et de l'objet.

    Présentement, je veux travailler sur des petits projets perso, genre gestion des employés
    avec interface graphique et base de données pour apprendre Python, en même temps, PyQt5 et mettre
    en pratique toutes les notions que j'ai acquises en python.
    Alors, je voudrais savoir si c'est une bonne idée.

    Merci de vos réponses !

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Bien sûr que c'est une bonne idée! Avec Python et PyQt5 on peut faire des programmes graphiques très élaborés sur à peu près n'importe quel sujet. Après, on peut même les rendre autonomes (.exe sous Windows) et même installable, pour mieux les diffuser, et ils pourront s'exécuter sur des PC sans installation de Python. Les utilisateurs ne sauront même pas que c'est écrit en Python.

    Ça, c'est pour les possibilités. Mais il y a du boulot!

    Entre la programmation courante de Python et la programmation d'interface graphique, il y a une sacré marge: il vaut mieux ne pas rater la 1ère partie avant de se cogner sur la seconde...

    Ensuite, au delà des bases de Python, il y a nécessité d'adopter une bonne méthode de développement et de bon outils pour arriver au bout.

    En cadeau de bienvenu, voilà un petit code en PyQt5:

    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
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    # Python3 v3.5, PyQt5 v5.9
     
    import sys
    from PyQt5 import (QtWidgets, QtCore) # ajouter QtGui si ajout d'une icone 
     
    #############################################################################
    class Fenetre(QtWidgets.QWidget):
     
        #========================================================================
        def __init__(self, parent=None):
            super().__init__(parent)
     
            # dimensionne la fenêtre
            self.resize(250, 100)
     
            # met un titre à la fenêtre
            self.setWindowTitle("Test")
     
            # option: met une icône à la fenêtre
            #self.setWindowIcon(QtGui.QIcon(monicone.png))
     
            # créer un 1er bouton appartenant à la fenêtre
            self.bouton1 = QtWidgets.QPushButton("bouton 1", self)
            # un clic sur ce bouton exécutera la méthode clictest1
            self.bouton1.clicked.connect(self.clictest1)
     
            # créer un 2ème bouton appartenant à la fenêtre
            self.bouton2 = QtWidgets.QPushButton("bouton 2", self)
            # un clic sur ce bouton exécutera la méthode clictest2
            self.bouton2.clicked.connect(self.clictest2)
     
            # positionne les 2 bouton dans la fenêtre
            layout = QtWidgets.QGridLayout()
            layout.addWidget(self.bouton1, 0, 0)
            layout.addWidget(self.bouton2, 1, 0)
            self.setLayout(layout)
     
        #========================================================================
        @QtCore.pyqtSlot(bool)
        def clictest1(self, coche=False):
            QtWidgets.QMessageBox.information(self,
                            "Information", 
                            "Vous avez cliqué sur le bouton 1")
     
        #========================================================================
        @QtCore.pyqtSlot(bool)
        def clictest2(self, coche=False):
            QtWidgets.QMessageBox.information(self,
                            "Information", 
                            "Vous avez cliqué sur le bouton 2")
     
    #############################################################################
    if __name__ == "__main__":
     
        #========================================================================
        # initialisation de la bibliothèque graphique
        app = QtWidgets.QApplication(sys.argv)
     
        #========================================================================
        # style pour toute l'application
        if "Fusion" in [st for st in QtWidgets.QStyleFactory.keys()]:
            app.setStyle(QtWidgets.QStyleFactory.create("Fusion"))
        elif sys.platform=="win32":
            app.setStyle(QtWidgets.QStyleFactory.create("WindowsVista"))
        elif sys.platform=="linux":
            app.setStyle(QtWidgets.QStyleFactory.create("gtk"))
        elif sys.platform=="darwin":    
            app.setStyle(QtWidgets.QStyleFactory.create("macintosh"))
     
        app.setPalette(QtWidgets.QApplication.style().standardPalette())
     
        #========================================================================
        # pour assurer la traduction automatique du conversationnel à la locale
        locale = QtCore.QLocale.system().name()
        translator = QtCore.QTranslator()
        reptrad = QtCore.QLibraryInfo.location(QtCore.QLibraryInfo.TranslationsPath)
        translator.load("qtbase_" + locale, reptrad) # <==qtbase_fr.qm
        app.installTranslator(translator)
     
        #========================================================================
        # lancement de la fenêtre
        fen = Fenetre()
        fen.show()
     
        #========================================================================
        # boucle de traitement des évènements
        sys.exit(app.exec_())
    Avec Python 3.5 et au delà, on installe PyQt5 avec pip => "pip install PyQt5".
    Il faut aussi installer pyqt5-tools pour avoir une installation complète (avec, par exemple, le "Designer" qui permet de dessiner des fenêtres complexes de manière interactive).

    Bon courage!

  3. #3
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    Bonsoir,

    Merci beaucoup pour votre réponse !

    Entre la programmation courante de Python et la programmation d'interface graphique, il y a une sacré marge: il vaut mieux ne pas rater la 1ère partie avant de se cogner sur la seconde...
    Donc étant débutant, selon vous, il serait mieux que je cherche d'abord à avoir plus d'expérience en programmation python sans aborder le GUI. Et une fois que je serai gourou de cela, je pourrais aborder le GUI ?

    Il faut aussi installer pyqt5-tools pour avoir une installation complète (avec, par exemple, le "Designer" qui permet de dessiner des fenêtres complexes de manière interactive).
    J'aurais appris que lorsque l'on débute, il faut éviter d'utiliser les outils qui permettent de dessiner des fenêtres, car ça empêche de bien maîtriser le code. Qu'en pensez-vous ?

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    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 486
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par master4 Voir le message
    Donc étant débutant, selon vous, il serait mieux que je cherche d'abord à avoir plus d'expérience en programmation python sans aborder le GUI. Et une fois que je serai gourou de cela, je pourrais aborder le GUI ?
    Sans attendre d'être un "gourou", il ne faudrait pas buter en permanence sur des erreurs élémentaires. Et comme la bibliothèque graphique fonctionne beaucoup avec des classes, il faut aussi être à l'aise en POO (héritage, etc...). Pour le Python de base, l'un des cours de référence est celui de Swinnen (https://python.developpez.com/cours/apprendre-python3/). Et faire les exercices!


    Citation Envoyé par master4 Voir le message
    J'aurais appris que lorsque l'on débute, il faut éviter d'utiliser les outils qui permettent de dessiner des fenêtres, car ça empêche de bien maîtriser le code. Qu'en pensez-vous ?
    A mon avis, il faut dessiner des fenêtres simples à la main (voir mon exemple), et les fenêtres complexes avec Designer. C'est ce que je fais moi-même. Mais au début, il faut effectivement apprendre à le faire à la main.

  5. #5
    Membre éclairé
    Homme Profil pro
    Data Lover
    Inscrit en
    Décembre 2014
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Data Lover
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2014
    Messages : 96
    Par défaut
    Merci beaucoup, ces conseils me sont très précieux

    Ne jamais remettre au lendemain ce que quelqu'un d'autre peut faire pour vous le jour même...
    La journée internationale de procrastination prévue initialement aujourd'hui, est repoussée à demain...
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)

Discussions similaires

  1. Réponses: 5
    Dernier message: 02/07/2014, 12h06
  2. Choix d'un environnement de dev GUI avec contraintes
    Par Dazdh dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 17/03/2009, 16h16
  3. Couleurs et image de fond sur GUI avec GUIDE
    Par rakinetak dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 12/08/2008, 13h54
  4. [Débutant] Tout nouveau sur GUI
    Par fanche64 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 14/01/2008, 11h35
  5. Problème avec 'light' sur un patch dans un GUI
    Par pierolapuree dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/02/2007, 14h35

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