Qt Designer
Qt Designer est un éditeur graphique qui nous permet de créer visuellement des interfaces graphiques en pyQt. Les interfaces seront ensuite exporté en fichier python que nous pourront utiliser dans nos programme.
Installation
Directement en ligne de commande
Ou bien depuis le site officiel : https://www.qt.io/download-qt-installer, vous allez devoir vous créer un compte pour l'installation.
Lancer Qt Designer
En ligne de commande, utilisez la commande designer
Convertir un fichier ui en python
Les interfaces que vous allez créer avec Qt Designer seront enregistrées dans des fichiers avec l'extension ui. Pour les utiliser dans vos programme python on va devoir les convertir. On peut le faire directement en ligne de commande et utilisant la commande pyuic5 suivi du nom du fichier source, de l'argument -o et du nom du fichier de destination. Le fichier de destination n'est pas obligé d'exister au moment d'exécuter la commande mais il doit porter l'extension py.
Exemple
Au démarrage de l'application Qt Designer la fenêtre nouveau formulaire va s'afficher. Sélectionnez Main Window dans la section templates\forms et cliquez sur créer.
Une fenêtre vide va être créé avec une barre de menu dans le haut et une barre de statut dans le bas. Enregistrez cette fenêtre dans le répertoire de votre application. (Dans mon exemple j'ai nommé mon fichier exemple.ui). Vous voilà prêt à créer votre interface. On créer une interface où on pourra saisir un id et en cliquant sur un bouton de l'information va s'afficher à l'écran.
Commencez par supprimer le menu et la barre de statut. Dans l'inspecteur d'objet sélectionnez menubar et statusbar et avec un clique droit choisissez supprimer.
Dans la section de gauche vous avez une liste de widgets à utiliser. Glissez un Vertical Layout dans la fenêtre principale. Cliquez ensuite sur la fenêtre principale à l'extérieur du widget que vous venez d'ajouter et dans la barre de menu du haut de l'éditeur cliquez sur le bouton mettre en forme verticalement. Le widget Vertical Layout devrait s'étendre à la totalité de la fenêtre.
Ensuite dans l'ordre on va ajouter un Label, un Line Edit, un Push Button et un autre Label.
En sélectionnant chaque widget, modifiez la propriété objectName dans l'éditeur de propriétés. Je n'ai pas renommé le premier label, mais pour les suivants j'ai utilisé les noms suivants :
- Line Edit = editCitoyenId
- Push Button = btnRechercher
- Label = lblResultat
Vous pouvez modifier le texte affiché sur un widget avec la propriété text. Vous pouvez ajuter le format du texte avec plusieurs propriétés, dont font et alignment.
Dernière chose, on va associer une fonction à un événement, ici un clique de la souris sur le bouton. On peut le faire depuis l'interface de Qt Designer ou dans notre script python. Pour le faire depuis Qt Designer, dans le menu principal, sous Édition sélectionnez Éditer signaux/slots. Ensuite cliquez sur le bouton et sans relâcher le bouton glisser la souris vers la fenêtre principale (attention on cible la fenêtre principale et non le widget layout). Vous devriez avoir une ligne rouge avec à son bout une flèche composée de barre rouge. Relâcher maintenant le bouton de la souris et la fenêtre Configurer connexion va s'afficher.
Sélectionnez clicked() et cliquez sur Éditer. Dans la fenêtre qui va apparaître cliquez sur le bouton avec une croix verte dans la section Slots. Modifier ensuite le nom de la fonction (slot1() par défaut) pour le nom que vous allez donner à votre fonction. Cliquez ensuite sur ok. Dans la fenêtre précédente vous avez maintenant votre fonction dans la section de droite, sélectionnez la et cliquez sur ok.
Pour connecter un événement depuis le script python, voir plus bas dans l'exemble du fichier app.py.
Voila le travail pour notre interface vous pouvez sauvegarder le tout et ouvrir un terminal dans le répertoire où le fichier se trouve. Utilisez la commande qu'on a vu plus haut pour convertir le fichier ui et fichier python.
Si on regarde dans le fichier python qu'on a créé on peut voir qu'il y a une classe Ui_MainWindow qui contient notre interface. Maintenant on va créer un fichier python qui va être le script principal et où on va appeler cette classe et l'afficher.
Finalement exécutez le script app.py pour afficher le résultat.