Télécharger au format pdf
Télécharger au format pdf
Vous êtes sur la page 1sur 7
eo Rapport Projet Python Hay Julien Année 2011/2012 2011/2012 ‘M. Georges Lonis Sommaire Introduction «. Le seript en général 5... Quelques détails sur les outils :.... Le pinceau Le crayon :. Lioutil forme =. Le crayon magique 6 La gomme 6 Conelusion =... 7 Inrropuction : Tai tout d'abord commencé par réfléchir A 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 4 Tutilisateur de générer Ia 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 ete. Tai done finis par trouvé un pseudo code qui paraissait « ordonné », cependant il aurai demandé plusiewss mois de travail si je voulais arriver 4 un premier fonctionnement basique. En effet, ce type de programme n'est pas simple 4 mettre en ceuvre et demande en général beaucoup de ressources humaines et beaucoup de temps. Tai finis par me diriger vers un programme plus basique et qui me permettais de m’entrainer 4 utiliser les interfaces graphique sous python : une interface me permettant de dessiner sur un canvas Ce rapport ne va pas étre tr’s long a lire puisque le script est assez simple et commenté. Tl n'y a pas Galgorithme paticulier, c'est surtout de I'mterface graphique. a7 LE scripT EN GENERAL ? Tai commencé par eréer la fenétre et les différents « panneaux » qui mlont permis de placer des outils... Des variables globales sont au début du script et me permettent de stoquer des chaines de caractére correspondant aux outils, couleurs et formes. Il y a également une variable b qui me permet de savoir A tout moment si le bouton est appuyé ou reliché. xold et yold me permettent de stoquer les valeur x et y précédentes. Tai erger une barre d'état qui affiche l'état (Voutil utilisé) en bas de interface graphique. A chaque changement d'outils, une fonction de ce type est appelé pour changer l'affichage en bas : def barreCrayon(): barreEtat.config(text = evatCourant.get()) Le programme est composé de 3 événements principaux lig au canvas = #0n créer les détecteurs d'evenements qui appel des fonctions : canevas. bind ", Chick) canevas bind ( » Motion) canevas.bind( » ButtonRelease) ‘A chaque clique, la fonction Click est appelé je met b a « down ». Ceci me permet de savoir que le bouton est enfones. Ensuite je regarde l'état et j’exéeute la bonne fonetion correspondant a l’outil en passant la variable « event » me permettant de récupérer les x ot y. Lorsquiil y a un mouvement sur le canvas, Ia fonetion « Motion» est appelé qui exécute les fonctions lig 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 4 « down » car aucun dessin n'est fait si le bouton de la souris nest pas enfones. Ensuite, lors du relichement du bouton de Ia souris, je remet b a « up ». Pour le choix de la couleur, je fait simplement un coneur ger() lors de la création d'une ligne par exemple, C'est le méme fonetionnement pour la forme. Ces variables sont automatiquement changées grice aux radio boutons. De méme pour la taille, je fais un simple sailleEntry.get() dans les fonctions outils, c'est a dire que je prend le nombre dans la zone de texte « tailleEntry » 47 QUELQUES DETAILS SUR LES OUTILS : Le pinceau : def Pinceau(event) + global xold, yold if xold is not Mone and yold is not Wone : event .widget.create_line(xold, yold, event.x, event.y, fill = couleur.get(), Cette fonction outils trace simplement une ligne de xold/yold & event.x/event.y. Un pincean a une certaine taille, j'ai donc pris la taille entrée par l'utilisateur et je I'ai mis dans width en option de la fonetion create_fine, Cette méthode trace des traits d'une grosse épaisseur, et bien entendu il y a des lanes 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 : def Crayon(event) + global x01d, yold if wold is not Mone and yold is not Wone : event .widget.create line(xold, yold, event.x, event.y, smooth = TRUE, 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» dia la lentenr de la boucle «’événement comparer 4 la vitesse que peut prendre la souris. Loutil forme def Forme (event) Af form.get() == “re: event widget .create_rectangle(event.x + int(tailleEntry.get()), event.y + int(t elif form.get() = event.widget.create_oval(event.x + int (tailleEntry.get()), event.y + int (taille elif form.get() = "po: event widget .create_polygon(event.x - int(tailleEntry.get()), event.y, event.x, angle" : Lioutil forme eréer simplement une forme que l'utilisateur a choisit. Si la variable global form est égale a « rectangle », alors je créer un rectangle, sinon, 57 Le crayon magique : def CrayonMagique(event) + global xold, yold if xold is not None and yold is not Wone : event widget create_rectangle (xold, yold,event.x,event.¥, Le crayon magique eréer des un rectangle chaque déplacement entre xold/yold et event.x/eventy. Cette fonction donne des formes spéciales et une grandeur de rectangle proportionnel a la vitesse de la sours. La gomme : def Gomme (event) + event.widget.create_oval(event.x + int (cailleEntry.get()), La gomme eréer des ovales en x et y de couleur blanche, 67 ConcLusIon En définitive, ce projet m'a appris 4 programmer en python et m'a apport quelques connaissance dans Tinterface graphique. Tl a également été un bon entrainement dans la programmation événementielle, Au début, j'ai beaucoup réfléchie & la problématique de /‘analyseur de modification redondantes qui était ma premiére idée de projet mais, comme je I'ai expliqué dans Vintroduction, je me suis plutot dirigé vers de I'interface graphique. Peut étre que je le développerai un jour si jen ai le temps. A partir de cet base de script, on peut facilement et rapidement eréer tout les outils que le veut, c'est Tun des avantages de python,

Vous aimerez peut-être aussi