Bonsoir,
Voici un petit challenge permettant de débuter les IHM (interface homme machine) très simplement.
PROBLÉMATIQUE
Votre patron vous demande de créer un logiciel permettant à chaque personne de se connecter au réseau de l'entreprise.
Il entrera son login, mot de passe (caché) et cliquera sur le bouton valider.
Vous pouvez ajouter des fonctionnalités supplémentaires si vous le souhaitez.
DESCRIPTIF
1) Entrer le login
2) Entrer le mot de passe
3) Possibilité entre le bouton valider ou cancel
4) Si bouton valider, le login et mot de passe seront vérifiés dans un fichier type texte
4) Si bouton cancel, effacement du login et mot de passe entrés
5) Affichage d'une fenêtre de confirmation d'entrée au réseau
5) Affichage d'une fenêtre d'erreur d'entrée au réseau
LANGAGE DE PROGRAMMATION
Python version 2.7 ou 3.x
INTERFACE GRAPHIQUE
Tkinter, PyQt (pour ceux qui maîtrise mieux python), wxPython, ...
CONSEILS
Vous allez créer une interface simple, rendez votre code le plus lisible possible, pour cela une organisation rigoureuse avec des classes est souhaitable...
CONVENTIONS
Une indentation de 4 espaces est obligatoire, voir la PEP8 si vous ne comprenez pas pourquoi...
Ne dépassez pas 80 caractères sur 1 ligne de code, idem voir PEP8
Merci pour nos petits yeux!
Bon courage...
GUIDE TKINTER
Afin de vous familiariser avec Tkinter, je vais vous présenter les outils dont vous avez besoin pour avancer dans ce petit challenge.
AFFICHAGE D'UNE FENÊTRE PRINCIPALE
Selon la version python, on va devoir importer le module Tkinter
En version 2.7
En version 3.x
La différence étant dans la 1ère lettre de Tkinter, soit une majuscule, soit une minuscule selon la version.
Pour l'affichage d'une fenêtre vide, on va instancier à l'aide de la classe Tk.
Mémoriser bien ces termes on les utilisera souvent.
Une instance est un objet créé à l'aide d'une classe que l'on peut considéré comme un dessin de l'objet ou un patron de l'objet.
classe -> patron de l'objet
instance -> objet créé
Créons notre fenêtre, on va l'appeler window, on va se placer en version python 3.x
mainloop est une méthode de la fenêtre créée (window) permettant à celle-ci de rester à l'écran, une genre de boucle infinie.
On voit à l'écran ceci :
Selection_003.jpg
On voit ci-dessus que le curseur >>> n'existe plus une fois mainloop() exécutée, c'est bien par là que l'on devra terminer notre programme.
Pour quitter cette fenêtre, vous cliquez simplement sur la croix.
AFFICHAGE DES ENTRÉES UTILISATEURS
Pour cela nous allons utiliser la classe Entry qui permet de créer une fenêtre d'édition où vous pourrez y insérer vos données (login + mdp)
La fenêtre d'édition login sera à gauche, tandis que mdp sera à droite.
Pour cela on va s'imaginer une grille, où login et mdp se trouve sur la même ligne, mais dans une colonne différente.
Ce qui donnera :
Selection_004.jpg
On voit que pour s'imaginer cette grille on a utilisé la méthode grid, qui permettra d'indiquer à nos fenêtre d'édition exactement où se placer.
AFFICHAGE DES BOUTONS
Pour afficher nos boutons, on utilisera la classe Button
Avec grid, placer vos boutons où vous souhaitez, je ne donne qu'un exemple d'utilisation de cette classe.
Selection_005.jpg
Au lieu de pack() ci-dessus, utilisez grid(), c'est exprès que je ne donne pas un exemple avec cette méthode.
AFFICHAGE DES LABELS
Les labels sont des étiquettes, ça permet d'inscrire du texte sur la fenêtre créée.
On utilisera pour cela la classe Label.
Un exemple ci-dessous :
Selection_006.jpg
AFFICHAGE DES MESSAGES BOX
Voici une partie un peu plus complexe,dans le sens où l'affichage d'une fenêtre de validation ou d'erreur dépendra du click sur le bouton "valider"
La classe Button utilise un paramètre se nommant command et permettant alors d'indiquer quelle fonction sera appelée lors d'un click.
Imaginons que je souhaite créer un bouton permettant lors du click, d'afficher "Hello World!", il faudra :
1) Créer une fonction (afficher par exemple) permettant d'afficher Hello World!
2) Indiquer à la classe Button que la commande à exécuter lors du click est la fonction "afficher"
Un exemple, avec 5 click sur le bouton Afficher :
Selection_007.jpg
Maintenant qu'on sait comment exécuter l'affichage d'une messagebox, il faut connaître la classe messagebox
Pour cela, vous devez importer spécifiquement messagebox
(Attention pour la version 2.7 c'est pas la même chose)
Pour informer l'utilisateur on utilisera la méthode showinfo.
Le lien de l'image, le forum limitant le nombre d'images à 5.
L'autre méthode permettant d'indiquer une erreur avec une messagebox est showerror.
Voilà le guide terminé, à vous de jouer...
Voici un petit challenge permettant de débuter les IHM (interface homme machine) très simplement.
PROBLÉMATIQUE
Votre patron vous demande de créer un logiciel permettant à chaque personne de se connecter au réseau de l'entreprise.
Il entrera son login, mot de passe (caché) et cliquera sur le bouton valider.
Vous pouvez ajouter des fonctionnalités supplémentaires si vous le souhaitez.
DESCRIPTIF
1) Entrer le login
2) Entrer le mot de passe
3) Possibilité entre le bouton valider ou cancel
4) Si bouton valider, le login et mot de passe seront vérifiés dans un fichier type texte
4) Si bouton cancel, effacement du login et mot de passe entrés
5) Affichage d'une fenêtre de confirmation d'entrée au réseau
5) Affichage d'une fenêtre d'erreur d'entrée au réseau
LANGAGE DE PROGRAMMATION
Python version 2.7 ou 3.x
INTERFACE GRAPHIQUE
Tkinter, PyQt (pour ceux qui maîtrise mieux python), wxPython, ...
CONSEILS
Vous allez créer une interface simple, rendez votre code le plus lisible possible, pour cela une organisation rigoureuse avec des classes est souhaitable...
CONVENTIONS
Une indentation de 4 espaces est obligatoire, voir la PEP8 si vous ne comprenez pas pourquoi...
Ne dépassez pas 80 caractères sur 1 ligne de code, idem voir PEP8
Merci pour nos petits yeux!
Bon courage...
GUIDE TKINTER
Afin de vous familiariser avec Tkinter, je vais vous présenter les outils dont vous avez besoin pour avancer dans ce petit challenge.
AFFICHAGE D'UNE FENÊTRE PRINCIPALE
Selon la version python, on va devoir importer le module Tkinter
En version 2.7
Code:
from Tkinter import *
Code:
from tkinter import *
Pour l'affichage d'une fenêtre vide, on va instancier à l'aide de la classe Tk.
Mémoriser bien ces termes on les utilisera souvent.
Une instance est un objet créé à l'aide d'une classe que l'on peut considéré comme un dessin de l'objet ou un patron de l'objet.
classe -> patron de l'objet
instance -> objet créé
Créons notre fenêtre, on va l'appeler window, on va se placer en version python 3.x
Code:
from tkinter import * window = Tk() window.mainloop()
On voit à l'écran ceci :
Selection_003.jpg
On voit ci-dessus que le curseur >>> n'existe plus une fois mainloop() exécutée, c'est bien par là que l'on devra terminer notre programme.
Pour quitter cette fenêtre, vous cliquez simplement sur la croix.
AFFICHAGE DES ENTRÉES UTILISATEURS
Pour cela nous allons utiliser la classe Entry qui permet de créer une fenêtre d'édition où vous pourrez y insérer vos données (login + mdp)
La fenêtre d'édition login sera à gauche, tandis que mdp sera à droite.
Pour cela on va s'imaginer une grille, où login et mdp se trouve sur la même ligne, mais dans une colonne différente.
Ce qui donnera :
Selection_004.jpg
On voit que pour s'imaginer cette grille on a utilisé la méthode grid, qui permettra d'indiquer à nos fenêtre d'édition exactement où se placer.
AFFICHAGE DES BOUTONS
Pour afficher nos boutons, on utilisera la classe Button
Avec grid, placer vos boutons où vous souhaitez, je ne donne qu'un exemple d'utilisation de cette classe.
Selection_005.jpg
Au lieu de pack() ci-dessus, utilisez grid(), c'est exprès que je ne donne pas un exemple avec cette méthode.
AFFICHAGE DES LABELS
Les labels sont des étiquettes, ça permet d'inscrire du texte sur la fenêtre créée.
On utilisera pour cela la classe Label.
Un exemple ci-dessous :
Selection_006.jpg
AFFICHAGE DES MESSAGES BOX
Voici une partie un peu plus complexe,dans le sens où l'affichage d'une fenêtre de validation ou d'erreur dépendra du click sur le bouton "valider"
La classe Button utilise un paramètre se nommant command et permettant alors d'indiquer quelle fonction sera appelée lors d'un click.
Imaginons que je souhaite créer un bouton permettant lors du click, d'afficher "Hello World!", il faudra :
1) Créer une fonction (afficher par exemple) permettant d'afficher Hello World!
2) Indiquer à la classe Button que la commande à exécuter lors du click est la fonction "afficher"
Un exemple, avec 5 click sur le bouton Afficher :
Selection_007.jpg
Maintenant qu'on sait comment exécuter l'affichage d'une messagebox, il faut connaître la classe messagebox
Pour cela, vous devez importer spécifiquement messagebox
(Attention pour la version 2.7 c'est pas la même chose)
Pour informer l'utilisateur on utilisera la méthode showinfo.
Le lien de l'image, le forum limitant le nombre d'images à 5.
L'autre méthode permettant d'indiquer une erreur avec une messagebox est showerror.
Voilà le guide terminé, à vous de jouer...
Commentaire