Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Votre première fenêtre graphique avec PySide

Deux approches distinctes Ajouter des widgets à la fenêtre


Accès rapide :
La notion d'application Qt
Mise en oeuvre de notre première classe de fenêtre
On instancie la fenêtre et on l'affiche

La notion d'application Qt

Quand on veut définir une application Qt, la première des choses à faire consiste à instancier l'objet d'application. Il est de type QApplication. Cette instance va permettre la gestion du flux de contrôle et les paramètres principaux de votre application graphique.

Si vous souhaitez permettre à l'utilisateur de votre application de changer certains paramétrages (notamment, le thème graphique de l'application), il faut repasser les paramètres spécifiés sur la ligne de commande (la liste sys.argv) au constructeur de l'application. La méthode exec va permettre de rentrer dans la boucle de gestion des événements. Voici un premier exemple de code montrant le démarrage de l'application.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
import sys

from PySide6.QtWidgets import QApplication


if __name__ == "__main__":
    # On crée l'instance d'application en lui passant le tableau des arguments.
    app = QApplication(sys.argv)

    # TODO : Instancier et afficher votre fenêtre graphique.

    # On démarre la boucle de gestion des événements.
    sys.exit(app.exec())
Démarrage d'une application Qt
si vous souhaitez passer des paramètres au démarrage de votre application Qt, utiliser un terminal (un shell), comme le montre l'exemple suivant. Nous reviendrons sur les possibilités de changer le thème visuel quand nous aurons un peu plus de composants graphiques dans la fenêtre .
$> python Sample.py -style fusion
si vous utilisez le binding PySide2 (pour Qt5), il faudra invoquer la méthode exec_ en lieu et place de la méthode exec.

Mise en oeuvre de notre première classe de fenêtre

Une fois l'application définie, il faut maintenant passer à la définition de votre fenêtre. Cela se fait en utilisant le concept d'héritage. Pour faire simple, Qt propose la classe QMainWindow : cette classe représente le concept de fenêtre principale de votre application graphique et, par défaut, une telle fenêtre est vierge. Vous allez vous servir de cette classe pour définir votre propre fenêtre en finalisant sa construction à votre convenance.

la mise en oeuvre d'interface graphique via PySide6 présuppose que vous ayez un bon niveau en termes de programmation orienté objet. Le concept d'héritage est notamment lié à ce style de programmation. Si vous pensez que cela n'est pas le cas, je vous recommande fortement de passer un peu de temps sur ce sujet. Vous pouvez, par exemple suivre nos tutoriels sur le sujet.

L'exemple ci-dessous change quelques caractéristiques de votre fenêtre (le titre, l'icône et sa taille).

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
# On définit une classe de fenêtre par héritage.
class MyWindow(QMainWindow):

    # Le constructeur de la classe nous permet de changer quelques caractéristiques.
    def __init__(self):
        # Appel au constructeur parent (QMainWindow).
        QMainWindow.__init__(self)
        # On change le titre de la fenêtre.
        self.setWindowTitle("Ma première fenêtre Qt avec Python")
        # On change l'icône affichée dans le bandeau supérieur de la fenêtre.
        self.setWindowIcon(QIcon("icons/file.png"))
        # On retaille la fenêtre (800 pixels de large et 600 en hauteur).
        self.resize(800, 600)
La définition de notre classe de fenêtre.
si vous n'avez pas d'icône à votre disposition, vous pouvez en télécharger sur des sites spécialisés.

On instancie la fenêtre et on l'affiche

Il ne reste plus que deux étapes pour apercevoir notre fenêtre à l'écran. La première étape consiste à utiliser notre classe MyWindow pour produire une instance. Par défaut, une fenêtre est créée cachée afin de vous laisser le temps de la construire sans qu'on puisse voir les widgets (les composants graphiques) y apparaître progressivement : nous verrons cette étape dans le prochain chapitre. Une fois la fenêtre instanciée, il ne reste plus qu'à l'afficher en y invoquant la méthode show. Voici le code complet de notre première fenêtre graphique avec PySide6/Qt.

 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 
import sys

from PySide6.QtGui import QIcon
from PySide6.QtWidgets import QApplication, QMainWindow


# On définit une classe de fenêtre par héritage.
class MyWindow(QMainWindow):

    # Le constructeur de la classe nous permet de changer quelques caractéristiques.
    def __init__(self):
        # Appel au constructeur parent (QMainWindow).
        QMainWindow.__init__(self)
        # On change le titre de la fenêtre.
        self.setWindowTitle("Ma première fenêtre Qt avec Python")
        # On change l'icône affichée dans le bandeau supérieur de la fenêtre.
        self.setWindowIcon(QIcon("icons/file.png"))
        # On retaille la fenêtre (800 pixels de large et 600 en hauteur).
        self.resize(800, 600)


if __name__ == "__main__":
    # On crée l'instance d'application en lui passant le tableau des arguments.
    app = QApplication(sys.argv)

    # On instancie une fenêtre graphique et l'affiche.
    myWindow = MyWindow()
    myWindow.show()

    # On démarre la boucle de gestion des événements.
    sys.exit(app.exec())
Le code complet de démarrage de notre première fenêtre PySide6/Qt.


Deux approches distinctes Ajouter des widgets à la fenêtre