This is an archive copy of wikilivres.ca as of 18 February 2017 (from the WikiTeam dump). The original site is closed.

Page:Swinnen - Apprendre Python, 2010.djvu/110

Free texts and images.
Jump to navigation Jump to search
This page has been proofread


88
Chapitre 8 — Utilisation de fenêtres et de graphismes




Exemple graphique : tracé de lignes dans un canevas
Figure 17
Figure 17

Le script décrit ci-dessous crée une fenêtre comportant trois boutons et un canevas. Suivant la terminologie de tkinter, un canevas est une surface rectangulaire délimitée, dans laquelle on peut installer ensuite divers dessins et images à l’aide de méthodes spécifiques[1].

Lorsque l’on clique sur le bouton « Tracer une ligne », une nouvelle ligne colorée apparaît sur le canevas, avec à chaque fois une inclinaison différente de la précédente.

Si l’on actionne le bouton « Autre couleur », une nouvelle couleur est tirée au hasard dans une série limitée. Cette couleur est celle qui s’appliquera aux tracés suivants.

Le bouton « Quitter » sert bien évidemment à terminer l’application en refermant la fenêtre.


  1. Petit exercice utilisant la bibliothèque graphique tkinter


from tkinter import *
from random import randrange

  1. --- définition des fonctions gestionnaires d'événements : ---

def drawline():
 "Tracé d'une ligne dans le canevas can1"
 global x1, y1, x2, y2, coul
 can1.create_line(x1,y1,x2,y2,width=2,fill=coul)

 # modification des coordonnées pour la ligne suivante :
 y2, y1 = y2+10, y1-10

def changecolor():
 "Changement aléatoire de la couleur du tracé"
 global coul
 pal=['purple','cyan','maroon','green','red','blue','orange','yellow']
 c = randrange(8) # => génère un nombre aléatoire de 0 à 7
 coul = pal[c]

  1. ------ Programme principal -------


  1. les variables suivantes seront utilisées de manière globale :

x1, y1, x2, y2 = 10, 190, 190, 10 # coordonnées de la ligne
coul = 'dark green' # couleur de la ligne

  1. Création du widget principal ("maître") :

fen1 = Tk()

  1. création des widgets "esclaves" :

can1 = Canvas(fen1,bg='dark grey',height=200,width=200)

  1. ↑ Ces dessins pourront éventuellement être animés dans une phase ultérieure.