Tkinter, non déplacement d'un ballon incompréhensible
ubranov
Messages postés2Date d'inscriptionlundi 29 mars 2010StatutMembreDernière intervention 8 août 2010
-
8 août 2010 à 23:21
ubranov
Messages postés2Date d'inscriptionlundi 29 mars 2010StatutMembreDernière intervention 8 août 2010
-
8 août 2010 à 23:45
Bonjour,
Je cherche simplement à animer un petit ballon dans une fenêtre grâce au module Tkinter. Je n'arrive vraiment pas à comprendre en quoi le code ci-dessous ne fonctionne pas comme souhaité. En effet, par la méthode 'bouge' les coordonnées graphique du ballon ne changent pas malgré que ses attributs 'position_xy' sont eux bien modifiés. (et malgré avoir aussi essayer la méthode 'update'). D'autant plus surprenant qu'en rentrant 'en dur' des coordonnées bidon comme arguments de la méthode 'coords', le ballon s'affiche bien à cette position bidon.
J'en déduis que le hic n'est ni dans l'utilisation de la méthode 'coords' ni dans les valeurs passées en arguments. Alors d'où peut diable venir ce non déplacement du ballon, pourquoi ? et comment y remédier ?
Merci d'avance pour vos réponses !!! (je souhaite éviter les 'global' et utiliser la notion de classe dans mon code)
E.
from Tkinter import *
class Ball:
def __init__(self, position_x, position_y, deplacement_x, deplacement_y):
self.position_x = position_x
self.position_y = position_y
self.deplacement_x = deplacement_x
self.deplacement_y = deplacement_y
self.forme canevas.create_oval(position_x-10, position_y-10, position_x+10, position_y+10, width 2, fill = 'red')
def bouge(self):
self.position_x = self.position_x + self.deplacement_x
self.position_y = self.position_y + self.deplacement_y
print(self.position_x-10, self.position_y-10, self.position_x+10, self.position_y+10)
# pourquoi diable le ballon ne se deplace pas alors que les coordonnes sont bien modifiees ????!!!!
# self.forme = canevas.coords(self.forme, 100, 100, 100, 100) # alors que de rentrer les coordonnees en dur fonctionne...?
self.forme = canevas.coords(self.forme, self.position_x-10, self.position_y-10, self.position_x+10, self.position_y+10)
canevas.after(50,self.bouge)
def commencer(event):
ballon = Ball(200,200 , 3,3)
ballon.bouge()
fenetre = Tk()
canevas Canvas(fenetre, height 500, width = 500)
canevas.pack()
boutton Button(fenetre, text "GO !")
boutton.bind("", commencer)
boutton.pack()
fenetre.mainloop()
A voir également:
Tkinter, non déplacement d'un ballon incompréhensible