Signaler

Exercice 8.21 apprendre à programmer en python Gérard swinnen [Fermé]

Posez votre question Roman Follet - Dernière réponse le 22 mai 2016 à 16:35 par PAncho
Bonjour,

Je bloque sur un exercice du livre de Gérard swinnen. Rapidement,l'exercice dit ceci/ J'ai 4 cercles colorés qui représentent des feux de circulation: 2 sont initialement vert et deux rouges.lors ce qu'on actionne un bouton, les deux verts passent au rouge et les deux rouges passent au vert.Voilà ou j'en suis:



from tkinter import *

def change_c():





# initialisation des couleurs pour les 4 feux

couleur=['green','red']

# Création de la route et du passage piéton

fen = Tk()
can=Canvas(fen,bg='white',height=310,width=300)
can.pack(side=TOP)
can.create_rectangle(100,5,200,305,fill='grey')
can.create_rectangle(100,105,110,205,fill='yellow')
can.create_rectangle(120,105,130,205,fill='yellow')
can.create_rectangle(140,105,150,205,fill='yellow')
can.create_rectangle(160,105,170,205,fill='yellow')
can.create_rectangle(180,105,190,205,fill='yellow')

# Création des 4 feux de circulation

can.create_oval(70,80,90,100,fill=couleur[0])
can.create_oval(210,210,230,230,fill=couleur[0])

can.create_oval(215,85,225,95,fill=couleur[1])
can.create_oval(75,215,85,225,fill=couleur[1])

# création du bouton

Button(fen,text='Changer',command=change_c).pack(side=BOTTOM)

fen.mainloop()




Je ne sais pas comment coder la fonction pour que quand on exécute le bouton, les deux feux verts passent au rouge et vice versa.Si vous pouvez me mettre sur le bon chemin (syntaxe, méthode...), je suis preneur,)...

Merci.



Utile
+0
plus moins
J'en suis maintenant là:



from tkinter import *

def change_c():
global couleur
if couleur[0]=='green':
couleur[0]='red'
couleur[1]='green'
if couleur[0]=='red':
couleur[0]='green'
couleur[1]='red'
can.itemconfigure(oval1,fill=couleur[0])
can.itemconfigure(oval2,fill=couleur[0])
can.itemconfigure(oval3,fill=couleur[1])
can.itemconfigure(oval4,fill=couleur[1])

couleur=['green','red']

fen = Tk()
can=Canvas(fen,bg='white',height=310,width=300)
can.pack(side=TOP)
can.create_rectangle(100,5,200,305,fill='grey')

can.create_rectangle(100,105,110,205,fill='yellow')
can.create_rectangle(120,105,130,205,fill='yellow')
can.create_rectangle(140,105,150,205,fill='yellow')
can.create_rectangle(160,105,170,205,fill='yellow')
can.create_rectangle(180,105,190,205,fill='yellow')


oval1 = can.create_oval(70,80,90,100,fill=couleur[0])
oval2 = can.create_oval(210,210,230,230,fill=couleur[0])

oval3 = can.create_oval(215,85,225,95,fill=couleur[1])
oval4 = can.create_oval(75,215,85,225,fill=couleur[1])

Button(fen,text='Changer',command=change_c).pack(side=BOTTOM)

fen.mainloop()



Mais le changement de couleur ne s'effectue pas....
Roman Follet- 6 mai 2016 à 16:10
J'ai trouvé une fonction qui fonctionne:



from tkinter import *

def change_c():
global couleur,i
if i%2==0:
can.itemconfigure(oval1,fill=couleur[1])
can.itemconfigure(oval2,fill=couleur[1])
can.itemconfigure(oval3,fill=couleur[0])
can.itemconfigure(oval4,fill=couleur[0])
if i%2!=0:
can.itemconfigure(oval1,fill=couleur[0])
can.itemconfigure(oval2,fill=couleur[0])
can.itemconfigure(oval3,fill=couleur[1])
can.itemconfigure(oval4,fill=couleur[1])
i +=1

couleur=['green','red']
i=0

fen = Tk()
can=Canvas(fen,bg='white',height=310,width=300)
can.pack(side=TOP)
can.create_rectangle(100,5,200,305,fill='grey')

can.create_rectangle(100,105,110,205,fill='yellow')
can.create_rectangle(120,105,130,205,fill='yellow')
can.create_rectangle(140,105,150,205,fill='yellow')
can.create_rectangle(160,105,170,205,fill='yellow')
can.create_rectangle(180,105,190,205,fill='yellow')


oval1 = can.create_oval(70,80,90,100,fill=couleur[0])
oval2 = can.create_oval(210,210,230,230,fill=couleur[0])

oval3 = can.create_oval(215,85,225,95,fill=couleur[1])
oval4 = can.create_oval(75,215,85,225,fill=couleur[1])

Button(fen,text='Changer',command=change_c).pack(side=BOTTOM)

fen.mainloop()



Si quelqu'un aurait une modification plus simple à apporter, je suis toujours preneur!!
PAncho- 22 mai 2016 à 16:35
Salut,
Je cherchais la solution d'un exercice suivant.


pour les feux, voici mon code

QUOTE

from tkinter import*

def popo():
k=0
while 150+25*k<330:
can.create_rectangle(150+25*k,100,170+25*k,200,fill='white')
k=k+1

def pupu():
global co1,co2
i=0
while i<4:
if i%2==0:
can.create_oval(coordo[i][0]-10,coordo[i][1]-10,coordo[i][0]+10,coordo[i][1]+10,fill=co1)
else:
can.create_oval(coordo[i][0]-10,coordo[i][1]-10,coordo[i][0]+10,coordo[i][1]+10,fill=co2)
i=i+1

def changer():
global co1,co2
x=co1
co1 =x
co1=co2
co2=x
pupu()

coordo=[[140,90],[360,90],[360,210],[140,210]]
co1='red'
co2='green'

fen=Tk()
fen.title('passage piétons')
can=Canvas(fen,bg='white', width=500,height=300)
can.create_rectangle(150,0,350,300,fill='grey')
popo()
pupu()
can.pack()

b1=Button(fen,text='changer',command=changer)
b1.pack(side=BOTTOM)
fen.mainloop()

UNQUOTE


on doit pouvoir faire mieux sur les couleurs dans le sous programme pupu()

Bon courage.

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !