Afficher un objet dans un canvas sans supprimer les autres

Résolu/Fermé
Blustfire Messages postés 4 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 1 mai 2013 - 29 avril 2013 à 15:39
Blustfire Messages postés 4 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 1 mai 2013 - 1 mai 2013 à 10:03
Bonjour,

Je me suis mis à coder sur python il n'y a pas longtemps et je cherche à faire un mastermind grâce à l'interface graphique Tkinter.
J'ai cherché sur internet sans trouver la réponse à mon problème, mais ça doit être parce que la version 3.2 est sortie il n'y a pas longtemps...et je manipule sur celle-ci --'

Voilà mon problème : l'utilisateur appuie sur des boutons pour afficher la combinaison qu'il veut dans le canvas "can_combi", grâce à un compteur "N", le bouton sur lequel on appuie va mettre un rond à la position 0,1,2,3 ou 4 dans le canvas.
Donc pour illustrer, si le joueur a déjà choisi ses 3 premières couleurs, N=3 et lorsque il va cliquer sur le bouton c'est la quatrième couleur qui s'affiche dans la combinaison. Pour ça tout va bien.
Mais, (et oui, il y a un mais, sinon je serais pas là x) )... lorsque je clique pour mettre ma première couleur, il l'affiche, et quand je reclique pour afficher la deuxième boule, il me l'affiche... tout en supprimant la première et ça me fait la même chose tout le long ><

voilà la partie de mon code à cause de laquelle je pense que ça bug :

def main():
pass

from tkinter import *
from math import *

def Bleu():
"""Affiche une boule Bleu à un emplacement défini en fonction du compteur N"""

global N

can_combi = Canvas(fenetre,width =500, height =150, bg ='black')
can_combi.grid(row=1,column=1)

couleur='blue'

if N==0 :
L0 = can_combi.create_oval(25,50,75,100,fill=couleur)
if N==1 :
L1 = can_combi.create_oval(125,50,175,100,fill=couleur)
if N==2 :
L2 = can_combi.create_oval(225,50,275,100,fill=couleur)
if N==3 :
L3 = can_combi.create_oval(325,50,375,100,fill=couleur)
if N==4 :
L4 = can_combi.create_oval(425,50,475,100,fill=couleur)

N=N+1

global N


def Rose():
"""Affiche une boule Rose à un emplacement défini en fonction du compteur N"""

global N

can_combi = Canvas(fenetre,width =500, height =150, bg ='black')
can_combi.grid(row=1,column=1)

couleur='pink'

if N==0 :
L0 = can_combi.create_oval(25,50,75,100,fill=couleur)
if N==1 :
L1 = can_combi.create_oval(125,50,175,100,fill=couleur)
if N==2 :
L2 = can_combi.create_oval(225,50,275,100,fill=couleur)
if N==3 :
L3 = can_combi.create_oval(325,50,375,100,fill=couleur)
if N==4 :
L4 = can_combi.create_oval(425,50,475,100,fill=couleur)

N=N+1

global N


def Jaune():
"""Affiche une boule Jaune à un emplacement défini en fonction du compteur N"""

global N

can_combi = Canvas(fenetre,width =500, height =150, bg ='black')
can_combi.grid(row=1,column=1)

couleur='yellow'

if N==0 :
L0 = can_combi.create_oval(25,50,75,100,fill=couleur)
if N==1 :
L1 = can_combi.create_oval(125,50,175,100,fill=couleur)
if N==2 :
L2 = can_combi.create_oval(225,50,275,100,fill=couleur)
if N==3 :
L3 = can_combi.create_oval(325,50,375,100,fill=couleur)
if N==4 :
L4 = can_combi.create_oval(425,50,475,100,fill=couleur)

N=N+1

global N


def Blanc():
"""Affiche une boule blanche à un emplacement défini en fonction du compteur N"""

global N

can_combi = Canvas(fenetre,width =500, height =150, bg ='black')
can_combi.grid(row=1,column=1)

couleur='White'

if N==0 :
L0 = can_combi.create_oval(25,50,75,100,fill=couleur)
if N==1 :
L1 = can_combi.create_oval(125,50,175,100,fill=couleur)
if N==2 :
L2 = can_combi.create_oval(225,50,275,100,fill=couleur)
if N==3 :
L3 = can_combi.create_oval(325,50,375,100,fill=couleur)
if N==4 :
L4 = can_combi.create_oval(425,50,475,100,fill=couleur)


N=N+1

global N


def Violet():
"""Affiche une boule violette à un emplacement défini en fonction du compteur N"""

global N

can_combi = Canvas(fenetre,width =500, height =150, bg ='black')
can_combi.grid(row=1,column=1)

couleur='Violet'

if N==0 :
L0 = can_combi.create_oval(25,50,75,100,fill=couleur)
if N==1 :
L1 = can_combi.create_oval(125,50,175,100,fill=couleur)
if N==2 :
L2 = can_combi.create_oval(225,50,275,100,fill=couleur)
if N==3 :
L3 = can_combi.create_oval(325,50,375,100,fill=couleur)
if N==4 :
L4 = can_combi.create_oval(425,50,475,100,fill=couleur)

N=N+1

global N


#####################################################################################################################
######################################################################################################################
# Fenetre principale

fenetre = Tk()

fenetre.geometry('1000x700') #transforme les dimensions de la fenetre
fenetre.configure(bg='black')

can_proposition = Canvas(fenetre,width=500, height=470,bg='black') # canvas enregistrant toutes les propositions
can_proposition.grid(row=0,column=1)

can_combi = Canvas(fenetre,width =500, height =150, bg ='black') # le canvas qui va recevoir la combinaison du joueur
can_combi.grid(row=1,column=1)

can_bouton = Canvas(fenetre,width=500, height =470, bg ='black')
can_bouton.grid(row=0,column=3)

bouton_verif = Button(fenetre,text="Verification",command=fenetre.destroy)
bouton_verif.grid(row=2,column=3,sticky=S)

bouton_exit = Button(fenetre,text="Quitter",command=fenetre.destroy)
bouton_exit.grid(row=2,column=2,sticky=S)



Quelqu'un peut m'aider s'il vous plait ? ^^'

A voir également:

1 réponse

Blustfire Messages postés 4 Date d'inscription lundi 29 avril 2013 Statut Membre Dernière intervention 1 mai 2013
1 mai 2013 à 10:03
Up ?
0