# -*- coding: utf-8 -*- """ Created on Wed Apr 02 21:14:31 2014 @author: Paul """ #!/usr/bin/python # -*- coding: utf8 -*- from Tkinter import * from random import randrange # procédure générale de déplacement : def move(): """déplacement automatique de la balle de gauche à droite""" global x1, y1, dep if x1 > 380: dep = dep elif x1 <60: dep = dep x1 = x1 + dep can1.coords(oval1, x1, y1, x1+10, y1+10) # => boucler après 100 millisecondes fen1.after(20, move) def start_it(): "démarrage de l'animation" global flag flag = not flag move() # gestionnaires d'évènements: def dep1_gauche(): global sx sx = -1 def dep1_droite(): global sx sx = 1 def dep1_haut(): global sy sy = -1 def dep1_bas(): global sy sy = 1 # Programme principal # les variables suivantes seront utilisées de manière globale: dep = 5 # valeur de deplacement x1, y1 = 10, 10 #coordonnées initiales sx, sy = 1, 0 flag =0 #commutateur # Création du widget principal ("maître"): fen1 = Tk() fen1.title("Super Ball") # création des widgets "esclaves": can1 = Canvas (fen1, bg='white', height=500, width=500) oval1= can1.create_oval(10, 10, 40, 40, width=2, fill='yellow') can1.pack(side=LEFT) can1.create_rectangle(50,50,100,100) #dessine un rectangle can1.create_rectangle(120,280,170,335) can1.create_line(100,65,420,65,fill='red',width=4)#ligne 1 can1.create_line(100,85,400,85,fill='red',width=4)#ligne 2 can1.create_line(400,84,400,300,fill='red',width=4)#ligne 3 can1.create_line(420,65,420,320,fill='red',width=4)#ligne 4 can1.create_line(170,320,420,320,fill='red',width=4)#ligne 5 can1.create_line(170,300,400,300,fill='red',width=4)#ligne 5 Button(fen1, text='Démarrer', command=start_it).pack(side=BOTTOM) Button(fen1, text='Quitter', command=fen1.destroy).pack(side=BOTTOM) Button(fen1, text='Gauche',command=dep1_gauche).pack() Button(fen1, text='Droite', command=dep1_droite).pack() Button(fen1, text='Haut', command=dep1_haut).pack() Button(fen1, text='Bas', command=dep1_bas).pack() # démarrage du réceptionnaire d'évènements (boucle principale): fen1.mainloop()