Nous allons maintenant utiliser tkinter pour dessiner. La zone de dessin proposée par tkinter s'appelle un canvas.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
fen = Tk()
can=Canvas(fen,width=500,height=500,background='white')
canv.pack()
fen.mainloop()
			

Nous définissons un objet de type "Canvas" : can. Le constructeur de la classe "Canvas" prend en paramètres : "fen" qui est l'objet tkinter, "width" la largeur du canvas, "height" la hauteur du canvas et "background" la couleur de fond du canvas (par défaut, la couleur de fond est grise). Comme vous avez dû le remarquer, nous avons avons ici ce que l'on appelle des "paramètres nommés". Quand certains paramètres d'une fonction sont optionnels (c'est le cas ici), il est nécessaire de nommer les paramètres comme ci-dessus (exemple "width=500").

À faire vous-même 5.1

Saisissez, testez et analysez ce code (placez cette image dans le même répertoire que le fichier qui contiendra votre programme).


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
fen = Tk()
can=Canvas(fen,width=500,height=500,background='white')
can.pack()
rect=can.create_rectangle(10,10,100,200,fill="yellow")
disque=can.create_oval(150,100,200,150,fill="red")
oval=can.create_oval(150,200,200,350,fill="")
ligne_1=can.create_line(150,80,450,250,fill="purple")
ligne_2=can.create_line(450,20,200,150,width=3)
poly=can.create_polygon(20,300,40,400,100,400,150,350)
mon_image=PhotoImage(file="smiley.gif")
img=can.create_image(250,250,image=mon_image)
text_1=can.create_text(350,350,text="Hello World!",fill="red")
text_2=can.create_text(300,400,text="Bonjour le monde!",font=("Helvetica",30))
fen.mainloop()
			

Vous devriez obtenir ceci :

tk

En vous aidant du code ci-dessus et de l'image ci-dessus, essayez de découvrir par vous-même les différentes fonctions permettant de dessiner, d'afficher une image ou encore d'afficher du texte dans un canvas (exemples de paramètres à étudier : "fill", "file", "text", "width"...). Où se trouve l'origine du repère dans un canvas ? Consultez la documentation de tkinter en cas de difficultés. N'hésitez pas à apporter des modifications à ce code afin de vous assurer que vous avez bien compris.


Nous allons maintenant apprendre à créer une animation (animer un dessin dans un canvas).

À faire vous-même 5.2

Saisissez, testez et analysez ce code.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
from Tkinter import *
import time
fen = Tk()
can=Canvas(fen,width=500,height=500,background='white')
can.pack()
balle=can.create_oval(10,250,30,270,fill="red")
while True:
    can.move(balle,1,0)
    fen.update_idletasks()
    fen.update()
    time.sleep(0.01)
fen.mainloop()
			

Voici quelques explications sur le programme ci-dessus :

À faire vous-même 5.3

En vous inspirant de ce qui a été fait dans le "À faire vous-même 5.2", écrivez un programme permettant à la balle de rebondir sur les bords de la fenêtre.


À faire vous-même 5.4

En vous inspirant de ce qui a été fait dans le "À faire vous-même 5.3", écrivez un programme permettant à la balle de se déplacer en diagonale et de rebondir sur les bords de la fenêtre de façon réaliste. La direction et la vitesse d'origine de la balle devront être aléatoires.

Pour "tirer" un nombre entier aléatoire compris entre a et b, il suffit d'écrire random.randint(a,b) sans avoir oublié d'importer le module random en plaçant un import random au début de votre programme.