Hello World avec PyQt
Un article de Mangue.org, l'encyclopéde libre.
Le minimum
Voici l'exemple le plus classique qui soit en informatique : le fameux Hello world ! C'est l'application la plus simple écrite en PyQt.
import sys from qt import * def run(): app = QApplication(sys.argv) label = QLabel("Hello world !",None) app.setMainWidget(label) label.show() app.exec_loop() if __name__ == '__main__': run()
Comme vous le voyez, rien de bien difficile. Les deux premières lignes permettent de charger les modules système et Qt. Puis nous créons un contexte d'application en appelant la classe QApplication qui prend en paramètre les arguments de la ligne de commande. Ensuite nous ajoutons un objet de type label qui contient uniquement un texte. A la ligne suivante nous désignons le label comme widget principal de l'application. C'est cette action qui permet, si jamais nous cliquons sur la croix pour clore la fenêtre de terminer le processus lié à l'application. Sans cela, il resterait en arrière plan. Puis nous rendons visible le label et nous lançons enfin la boucle de gestion d'évènements de Qt.
| Remarque |
|
Un évènement
Une interface sans interactions avec l'utilisateur n'a pas beaucoup d'intérêts. Transformons notre label précédent en bouton et ajoutons lui un évènement.
import sys from qt import * def run(): app = QApplication(sys.argv) btn = QPushButton("Bye bye",None) app.connect(btn,SIGNAL("clicked()"),app,SLOT("quit()")) app.setMainWidget(btn) btn.show() app.exec_loop() if __name__ == '__main__': run()
Peu de différences. Nous avons créé un bouton cliquable ayant comme label "Bye bye". Qt fonctionne sur le modèle de signaux/slots. Sans rentrer dans les détails, Qt permet d'attacher un signal émis par un objet à un autre objet qui lui possède un récepteur, ou une méthode dite de callback qui est exécutée lorsque le signal est déclanché. Dans notre cas, nous avons indiqué que lorsque l'application connecte le signal clicked de l'objet bouton au signal quit de l'application.

