3. Programme principal
Il reste à écrire le programme principal et à le placer dans start_app.py (le script
principal défini pour notre projet eric6).
Outre la fenêtre principale définie plus haut, ce programme utilise une instance de
QApplication, un objet discret mais essentiel de PyQt : il gère notamment
l'initialisation du moteur graphique et la gestion des événements. Le programmeur n'a
en général pas à se soucier de cet objet si ce n'est l'instancier et l'exécuter. Voyons
concrètement comment on fait cela dans le listing ci-dessous.
# start_app.py
import sys
from PyQt5.QtWidgets import QApplication
from main_window_biblio import MainWindowBiblio
app = QApplication(sys.argv) mainWindowBiblio = MainWindowBiblio()
mainWindowBiblio.show() rc = app.exec_() sys.exit(rc)
Comme on peut s'y attendre, on commence par importer la classe MainWindowBiblio
et l'instancier . Notons que la création d'une fenêtre n'implique pas son affichage :
elle est simplement chargée en mémoire et initialisée ; pour la faire apparaître à
l'écran, il faut invoquer la méthode show() . On crée une instance de QApplication
: on passe au constructeur QApplication les arguments éventuels fournis au démarrage
(sys.argv). Ensuite, on démarre l'application en invoquant la méthode exec_() ;
l'appel à cette méthode est essentiel : il donne vie à l'application en lançant la boucle
d'événements qui va réagir à toutes les actions de l'utilisateur. Cette méthode ne rend
pas directement la main à l'appelant : elle n'est interrompue qu'à la clôture de
l'application, quand l'utilisateur ferme la fenêtre principale.
Note > À la fermeture de la fenêtre, la méthode exec_ renvoie un nombre appelé code
de retour (variable rc dans le listing) : il vaut zéro si l'application s'est terminée de
façon normale ou un nombre négatif identifiant le type d'erreur dans le cas
contraire. Le programme principal peut alors se terminer ; la bonne pratique est de
transmettre ce code à l'environnement d'exécution via sys.exit(rc).
Dans une application PyQt bien conçue, le programme principal est très court et
semblable à celui que nous venons d'écrire. Il est recommandé de placer la logique de
l'application dans un ou plusieurs modules, tels que main_window_biblio.py, qu'on
71
Précédent

- 72/494

Suivant