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/127

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


Modification des propriétés d'un objet - Animation'
105



Modification des propriétés d’un objet — Animation

À ce stade de votre apprentissage, vous souhaitez probablement pouvoir faire apparaître un petit dessin quelconque dans un canevas, et puis le déplacer à volonté, par exemple à l'aide de boutons.

Veuillez donc écrire, tester, puis analyser le script ci-dessous :


from tkinter import *


# procédure générale de déplacement :
def avance(gd, hb) :
global x1, y1
x1, y1 = x1 +gd, y1 +hb
can1.coords(oval1, x1, y1, x1+30, y1+30)

# gestionnaires d’événements :
def depl_gauche() :
avance(-10, 0)

def depl_droite() :
avance(10, 0)

def depl_haut() :
avance(0, —10)

def depl_bas() :
avance(0, 10)
# -------
Programme principal-------

# les variables suivantes seront utilisées de manière globale :
x1, y1 = 10, 10 # coordonnées initiales

# Création du widget principal ( « maître » ) :
fen1 = Tk()
fen1.title( « Exercice d’animation avec tkinter » )

# création des widgets « esclaves » :
can1 = Canvas(fen1, bg=’dark grey’, height=300, width=300)
oval1 = can1.create_oval(x1, y1, x1+30, y1+30, width=2, fill=’red’)
can1.pack(side=LEFT)
Button(fen1, text=’Quitter’, command=fen1.quit).pack(side=BOTTOM)
Button(fen1, text=’Gauche’, command=depl_gauche).pack()
Button(fen1, text=’Droite’, command=depl_droite).pack()
Button(fen1, text=’Haut’, command=depl_haut).pack()
Button(fen1, text=’Bas’, command=depl_bas).pack()

# démarrage du réceptionnaire d’évènements (boucle principale) :
fen1.mainloop()

Le corps de ce programme reprend de nombreux éléments connus : nous y créons une fenêtre fen1, dans laquelle nous installons un canevas contenant lui-même un cercle coloré, plus cinq boutons de contrôle. Veuillez remarquer au passage que nous n'instancions pas les widgets boutons dans des variables (c'est inutile, puisque nous n'y faisons plus référence par la suite) :