- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Deviens membre Premium magic_button
Débloque cette session en devenant Membre Premium 🚀
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte person00:00:00 :Dans cette partie, on va créer l'interface de notre application de gestionnaire de tâches.Donc pour l'instant, je vais juste faire l'interface. On ne va pas créer tout de suite dans cette partie
00:00:09 :les connexions entre les boutons, les widgets, etc. On va juste créer l'interface et par la suite oncréera les connexions entre les différents widgets. Donc la première chose à faire c'est
00:00:19 :bien entendu d'importer tous les éléments dont on va avoir besoin. J'en profite pour vous direqu'on peut faire ça de différentes façons. On pourrait importer donc depuis Pyside6.QtWidget,
00:00:31 :donc depuis les widgets de Pyside6, importer tous les éléments séparément. Donc QApplication,QLineEdit, QListWidget, etc. Donc on pourrait les importer comme ça. Ce qu'on peut faire
00:00:42 :également c'est plutôt importer depuis Pyside6 directement QtWidget. Ça permet d'avoir un peumoins d'imports à effectuer. Par contre après il va falloir préfixer à chaque fois le nom du
00:00:52 :QApplication et des widgets du nom du module. Donc par exemple pour l'application on ne seraobligé de faire QtWidget.QApplication, pour la fenêtre on fera QtWidget.QWidget, etc. Donc
00:01:05 :c'est un peu plus pratique puisque on n'a pas besoin à chaque fois de modifier les imports.Par contre il va falloir à chaque fois rajouter le nom du module. Donc à vous de voir ce que
00:01:12 :vous préférez de faire. Moi pendant longtemps je faisais cette façon comme ça. Depuis peu j'aitendance à faire avec la façon que je vous ai montré jusqu'à présent, c'est à dire importerdirectement depuis QtWidget les éléments dont on a besoin. Et notamment puisque depuis peu avec
00:01:26 :VS Code et avec PyCharm vous avez ces options d'auto import qui sont faites automatiquement.Donc dès que vous utilisez le nom d'une classe et bien elle est automatiquement importée etrajoutée au début des imports de votre fichier. Donc ça n'est pas très gênant, ça permet d'avoir
00:01:39 :un code qui est un peu plus allégé et c'est très pratique d'avoir cet auto import qui sefait tout seul. Ça nous évite d'avoir à refaire les imports nous même à chaque fois au début de
00:01:48 :notre fichier. Donc moi je vais faire comme ça, je vais importer tout ce dont j'ai besoin déjà audébut de mon fichier. Donc on va utiliser le QApplication, on va utiliser le QLineEdit,
00:01:56 :on va avoir ensuite le QListWidget qui va nous permettre d'afficher la liste des tâches àfaire. On va avoir un QPushButton et on va avoir le QWidget qui va me permettre d'afficher la
00:02:06 :fenêtre et le QVBoxLayout qui va me permettre d'organiser mes différents widgets dans un layoutvertical. Donc c'est tout ce qu'on a besoin pour notre application. On va pouvoir ensuite créer
00:02:16 :notre classe. Donc on va faire une classe que je vais appeler MainWindow qui va hériter deQWidget, qui est donc la classe qui me permet de créer une fenêtre basique. On va faire la méthode
00:02:26 :init dans laquelle on va créer notre interface et je vais utiliser Super pour initialiser laméthode init de la classe QWidget. On va changer le titre de notre fenêtre en faisant un
00:02:36 :SetWindowTitle et en mettant par exemple docstring todo. Et pour l'instant je vais pas aller plusloin je vais juste déjà créer mon application et ma fenêtre donc en faisant une application àpartir de QApplication. Ensuite je crée ma fenêtre avec MainWindow donc en faisant une instance de
00:02:52 :la classe que l'on vient de créer. On va afficher notre fenêtre avec win.show et ensuite on vaexécuter notre application avec exec. Donc je vérifie déjà que tout ça fonctionne, je sauvegarde
00:03:02 :et je lance le script et normalement voilà on devrait avoir une fenêtre toute simple avec letitre qui est affiché ici. Donc ensuite ce qu'on va faire c'est créer notre layout, les widgets et
00:03:11 :ajouter les widgets dans le layout. Donc le layout je vais l'appeler MainLayout, ça va être un QVBoxLayoutet je n'oublie pas de mettre self ici pour le parenter à ma fenêtre. Donc bien
00:03:22 :important ici sinon votre layout ne sera pas parenté à la fenêtre et vous pouvez ajoutertout ce que vous voulez dans le layout. Si le layout n'est pas parenté il ne sera pas affiché
00:03:30 :et on ne verra donc rien du tout. Je vais ensuite créer donc la liste de todo, je vais l'appelerpar exemple LWTodo donc là encore je préfixe avec un petit acronyme pour avoir une idée dequel type de widget il s'agit. On pourrait mettre juste todo ici mais moi j'aime bien avoir cet
00:03:45 :acronyme ici qui me permet de rapidement savoir que c'est un liste widget et de le retrouverrapidement également quand je vais en avoir besoin en faisant par exemple self.lw et en
00:03:54 :m'aidant de l'autocomplétion. Donc on va dire que listewidget todo c'est un QListWidget, ensuiteon va créer un lineEdit donc je vais l'appeler LE pour lineEdit et on va l'appeler TaskTitleet on va créer un QLineEdit. Je vais ensuite utiliser une méthode sur la lineEdit qui va me
00:04:12 :permettre d'afficher un texte quand la boîte est vide. Donc ça c'est ce qu'on appelle un placeholderdonc pour ça je vais utiliser la méthode setPlaceholderText donc LE TaskTitle.setPlaceholderText
00:04:24 :donc là bien attention heureusement là je suis aidé par l'autocomplétion mais il y a un Pmajuscule, pas de majuscule sur le H je faisais très souvent la faute avant donc c'est vraimentplaceholder en un seul mot avec une majuscule sur le P et ensuite texte avec un T majuscule. On va
00:04:38 :indiquer ici que c'est la tâche à effectuer que l'on doit rentrer dans cette boîte de texte etensuite on va créer le bouton qui va me permettre de supprimer tous les éléments de la liste. Donc
00:04:48 :je vais l'appeler btnClear et on va faire un QPushButton et comme texte on va mettre toutsupprimer tout simplement. Donc pour l'instant j'ai créé mon layout, j'ai créé mes widgets,
00:04:58 :si je lance l'application on va avoir toujours une fenêtre qui va être vide puisque dans lafenêtre on a ajouté un layout mais on n'a pas encore ajouté les widgets dans le layout. Donc on
00:05:07 :a le layout mais maintenant il va falloir ajouter ses widgets dans ce main layout. Donc pour ça onva utiliser la méthode addWidget donc on va faire self.mainLayout.addWidget, on va ajouter la
00:05:17 :liste de todo, ensuite on va ajouter dans le mainLayout le lineEdit donc self.leTaskTitleet pour finir donc je vais dupliquer cette ligne ici en faisant option shift et la flèche du bassur vs code pour dupliquer la ligne et ici on va ajouter btnClear. Donc je sauvegarde et là
00:05:35 :normalement je vais avoir mon interface qui est complète avec la liste de tâches qui pour l'instantne contient rien, le lineEdit, vous voyez que tant que je ne clique pas et que je n'écris rien iciet bien on a le placeholder qui est affiché, si je clique sur la boîte de texte et que je commence
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.