1. Lancement d'une fenêtre Qt Quick par
Python
Pour lancer une application Qt Quick depuis du code Python, on procède de la même
manière que pour une application PyQt traditionnelle : création d'un objet
QApplication (nommé, par exemple, app) , puis de l'interface elle-même et, pour
finir, exécution du code avec app.exec_() . La différence est que, pour instancier
les composants de l'interface, il faut passer par un moteur d'exécution Qt Quick, une
instance de QQmlApplicationEngine. Son constructeur prend en argument le nom du
fichier Qt Quick à charger, c'est-à-dire le fichier principal (qui n'est généralement pas
un composant Qt Quick réutilisable).
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtQml import QQmlApplicationEngine
if __name__ == "__main__":
app = QApplication(sys.argv)
engine = QQmlApplicationEngine("main.qml") engine.quit.connect(app.quit))
sys.exit(app.exec_())
Note > Pour que les appels à Qt.quit() fonctionnent dans le code JavaScript, il est
nécessaire de connecter un signal dans le code Python lançant l'interface. C'est à
cela que sert la ligne engine.quit.connect(app.quit) .
Note > QQmlApplicationEngine impose que le composant racine chargé soit de type
fenêtre, comme Window ou MainWindow. Charger une interface dont la racine est un
Rectangle n'affichera rien.
Note > QQmlApplicationEngine est une couche d'abstraction au-dessus du moteur
d'exécution Qt Quick, QQmlEngine. Par rapport à ce dernier,
QQmlApplicationEngine facilite la création d'une interface visible à l'utilisateur
sans devoir effectuer trop d'opérations. Outre cette distinction, leur utilisation est
identique.
Dans la suite de ce chapitre, le moteur d'exécution Qt Quick sera utilisé pour
communiquer des variables accessibles globalement dans le code QML ou pour créer
379
Précédent

- 380/494

Suivant