nikko76600
Messages postés19Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention20 avril 2010
-
25 janv. 2010 à 10:09
nikko76600
Messages postés19Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention20 avril 2010
-
27 janv. 2010 à 23:57
Bonjour a tous et a toutes,
Je suis débutant dans la programmation en python (j'ai commencé il y a 3 jours) et je pose ma première question ici (qui ne sera sans aucun doute pas la dernière...)
J'ai un script qui utilise Tkinter pour afficher une petite animation, a l'aide de la récursivité d'une fonction (ca ce dit "récursivité d'une fonction ?"). Voici le code :
================================================
# -*- coding: Latin-1 -*-
from Tkinter import *
def move():
global x, y, dx, dy
x, y = x+dx, y+dy
if x >180:
x, dx, dy = 180, 0, 5
if y >180:
y, dx, dy = 180, -5, 0
if x <20:
x, dx, dy = 20, 0, -5
if y <20:
y, dx, dy = 20, 5, 0
can.coords(balle, x-10, y-10, x+10, y+10)
if flag==1:
fenetre.after(30,move)
def start():
global flag
if flag==0:
flag=1
move()
def stop():
global flag
flag=0
x, y = 20, 20
flag = 0
dx, dy = 5, 0
fenetre = Tk()
fenetre.title("exo d'anim ac Tkinter")
Dans mon tuto, il y a un exercice qui demmande de faire varier la couleur de la balle a chaque "virage". J'ai donc essayer de placer can.configure(balle, fill='blue') par exemple dans un des if qui determine si il faut tourner, mais la console m'a renvoyé une erreur. Quel est donc la methode a utiliser pour effectuer cette action ?
Merci beaucoup, Nils
edit : ca doit etre vraiment super simple quand on connais tkinter depuis des annees, mais il y a quelques jours, je pensait que python etait juste un gros serpent... J'aimerai une réponse si possible pas trop agressive... :)
nyko77
Messages postés6Date d'inscriptionvendredi 8 septembre 2006StatutMembreDernière intervention29 janvier 2010 26 janv. 2010 à 21:23
Bonjour,
tu y es presque. il faut utiliser .itemconfigure() et non pas configure() pour modifier les attributs d'un item. .configure() modifie les propriétés du canvas (taille, couleur...) mais pas celles des items.
# -*- coding: Latin-1 -*-
from Tkinter import *
def move():
global x, y, dx, dy
x, y = x+dx, y+dy
if x >180:
can.itemconfigure(balle, fill=colors[1])
x, dx, dy = 180, 0, 5
if y >180:
can.itemconfigure(balle, fill=colors[2])
y, dx, dy = 180, -5, 0
if x <20:
can.itemconfigure(balle, fill=colors[3])
x, dx, dy = 20, 0, -5
if y <20:
can.itemconfigure(balle, fill=colors[0])
y, dx, dy = 20, 5, 0
can.coords(balle, x-10, y-10, x+10, y+10)
if flag==1:
fenetre.after(30,move)
def start():
global flag
if flag==0:
flag=1
move()
def stop():
global flag
flag=0
x, y = 20, 20
colors = ["red", "blue", "green", "yellow"]
flag = 0
dx, dy = 5, 0
fenetre = Tk()
fenetre.title("exo d'anim ac Tkinter")
can = Canvas(fenetre, width=200, height=200, bg='white', bd=1, relief=GROOVE)
can.pack(side=LEFT)
balle = can.create_oval(x-10, y-10, x+10, y+10, fill=colors[0])
dem = Button(fenetre, text="demmarer", width=8, command=start).pack(side=TOP)
arr = Button(fenetre, text="arreter", width=8, command=stop).pack(side=TOP)
fenetre.mainloop()
nikko76600
Messages postés19Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention20 avril 2010 27 janv. 2010 à 00:30
super !! Merci beaucoup, très sympa :)
une autre petite question a ce sujet... on peut-on trouver toute ces "classes" ? (je ne connais pas encore le tous vocabulaire...)