Rapport Projet Python

publicité
Rapport Projet Python
Hay Julien
Année 2011/2012
2011/2012
M. Georges Louis
Sommaire
Introduction :........................................................................................................................................3
Le script en général :............................................................................................................................4
Quelques détails sur les outils :............................................................................................................5
Le pinceau :............................................................................................................................5
Le crayon :..............................................................................................................................5
L'outil forme :.........................................................................................................................5
Le crayon magique :...............................................................................................................6
La gomme :.............................................................................................................................6
Conclusion :..........................................................................................................................................7
INTRODUCTION :
J'ai tout d'abord commencé par réfléchir à un projet totalement différent. Je vous en ai parlé
en cours et par e-mail. Ce programme aurai été capable d'analyser des manipulations textuelles dans
une interface graphique python (Tkinter) et de distinguer des redondances. Il aurai ensuite proposer
à l'utilisateur de générer la suite logique des modifications du texte (exemple simple : je rentre 1
puis 2, le programme me propose 3 puis 4 etc). Pour générer les modifications proposées par le
logiciel, il aurai simplement fallut appuyer sur un boutons pour chaque occurrence. J'ai longuement
réfléchie aux algorithmes que ce programme demandait et aux structures de données etc. J'ai donc
finis par trouvé un pseudo code qui paraissait « ordonné », cependant il aurai demandé plusieurs
mois de travail si je voulais arriver à un premier fonctionnement basique. En effet, ce type de
programme n'est pas simple à mettre en œuvre et demande en général beaucoup de ressources
humaines et beaucoup de temps.
J'ai finis par me diriger vers un programme plus basique et qui me permettais de m’entraîner à
utiliser les interfaces graphique sous python : une interface me permettant de dessiner sur un canvas
avec différents outils.
Ce rapport ne va pas être très long à lire puisque le script est assez simple et commenté. Il n'y a pas
d'algorithme particulier, c'est surtout de l'interface graphique.
3/7
LE SCRIPT EN GÉNÉRAL :
J'ai commencé par créer la fenêtre et les différents « panneaux » qui m'ont permis de placer
des outils... Des variables globales sont au début du script et me permettent de stoquer des chaînes
de caractère correspondant aux outils, couleurs et formes. Il y a également une variable b qui me
permet de savoir à tout moment si le bouton est appuyé ou relâché. xold et yold me permettent de
stoquer les valeur x et y précédentes.
J'ai créer une barre d'état qui affiche l'état (l’outil utilisé) en bas de l'interface graphique. À chaque
changement d'outils, une fonction de ce type est appelé pour changer l'affichage en bas :
Le programme est composé de 3 événements principaux lié au canvas :
A chaque clique, la fonction Click est appelé je met b à « down ». Ceci me permet de savoir que le
bouton est enfoncé. Ensuite je regarde l'état et j’exécute la bonne fonction correspondant à l’outil en
passant la variable « event » me permettant de récupérer les x et y.
Lorsqu'il y a un mouvement sur le canvas, la fonction « Motion » est appelé qui exécute les
fonctions lié aux outils et enregistre le x et y précédent dans les variables xold et yold. Ceci est
exécuter seulement si b est égale à « down » car aucun dessin n'est fait si le bouton de la souris n'est
pas enfoncé.
Ensuite, lors du relâchement du bouton de la souris, je remet b à « up ».
Pour le choix de la couleur, je fait simplement un couleur.get() lors de la création d'une ligne par
exemple. C'est le même fonctionnement pour la forme. Ces variables sont automatiquement
changées grâce aux radio boutons.
De même pour la taille, je fais un simple tailleEntry.get() dans les fonctions outils, c'est a dire que je
prend le nombre dans la zone de texte « tailleEntry ».
4/7
QUELQUES DÉTAILS SUR LES OUTILS :
Le pinceau :
Cette fonction outils trace simplement une ligne de xold/yold à event.x/event.y. Un pinceau a une
certaine taille, j'ai donc pris la taille entrée par l'utilisateur et je l'ai mis dans width en option de la
fonction create_line. Cette méthode trace des traits d'une grosse épaisseur, et bien entendu il y a des
blancs entre les traits aux extrémités. On aurai pu afficher des oval mais j'ai préféré garder cet
méthode qui est plus élégante.
Le crayon :
Le crayon est basé sur le même principe mais avec une épaisseur de 1 pixel. Le fait de tracer un trait
entre xold/yold et event.x/event.y permet de ne pas avoir de « blanc » dû à la lenteur de la boucle
d’événement comparer à la vitesse que peut prendre la souris.
L'outil forme :
L'outil forme créer simplement une forme que l'utilisateur a choisit. Si la variable global form est
égale à « rectangle », alors je créer un rectangle, sinon...
5/7
Le crayon magique :
Le crayon magique créer des un rectangle à chaque déplacement entre xold/yold et event.x/event.y.
Cette fonction donne des formes spéciales et une grandeur de rectangle proportionnel à la vitesse de
la souris.
La gomme :
La gomme créer des ovales en x et y de couleur blanche.
6/7
CONCLUSION :
En définitive, ce projet m'a appris à programmer en python et m'a apporté quelques
connaissance dans l'interface graphique. Il a également été un bon entraînement dans la
programmation événementielle. Au début, j'ai beaucoup réfléchie à la problématique de l'analyseur
de modification redondantes qui était ma première idée de projet mais, comme je l'ai expliqué dans
l'introduction, je me suis plutôt dirigé vers de l'interface graphique. Peut être que je le développerai
un jour si j'en ai le temps.
A partir de cet base de script, on peut facilement et rapidement créer tout les outils que le veut, c'est
l'un des avantages de python.
7/7
Téléchargement