Je suis en train d'effectuer un exercice sur Python où il faut construire un damier et placer deux boutons, le premier bouton placera un pion au hasard sur le damier (uniquement les cases blanches) et le second bouton supprimera tous les pions.
je viens de faire le premier bouton mais je suis bloqué sur le deuxieme bouton
from tkinter import *
from random import choice
decalage = True
TAILLE = (400,400)
PAS = 20
fenetre = Tk()
canevas = Canvas(fenetre,height = TAILLE[0], width = TAILLE[1],bg="black")
canevas.grid(columnspan=2)
for y in [i for i in range(TAILLE[1]) if i % PAS == 0]:
decalage = not decalage
for x in [i for i in range(TAILLE[0]) if i % (PAS*2) == 0]:
if decalage:
ecart = PAS
else:
ecart = 0
liste_pions.append((x+ecart,y))
canevas.create_rectangle(x+ecart,y,x+PAS+ecart,y+PAS,fill="white")
def dessiner_pion():
coord = choice(liste_pions)
liste_pions.remove(coord)
creer_cercle(canevas,coord[0],coord[1],int(PAS))
def creer_cercle(maitre,x,y,rayon):
maitre.create_oval(int(x),int(y),int(x+rayon),int(y+rayon),fill="red")
bouton_1 = Button(fenetre,text="Pion",command=dessiner_pion)
bouton_1.grid(column=0,row=1)
bouton_2 = Button(fenetre,text="Effacer",command=effacer)
bouton_2.grid(column=1, row=1)
peut on mettre les instances correspondand aux cercles dans une liste qui suffira ensuite de supprimer pour remettre la grille a zero ? si oui comment faire ? si non y a t'il d'autre alternative ?
Quand tu crées un cercle dans un canvas, tu peux préciser le paramètre tags, qui permettra par la suite de supprimer l'objet créé en appelant ce tag avec la méthode dtag.
L'autre solution est comme tu l'indiques, placer les id de tes cercles dans une liste, afin de les supprimer par la suite, à l'aide d'une boucle.
Indication: on peut avoir la liste des items dans la canvas avec la méthode find_all.
cependant il reste un probleme : comment mettre un tag sur une figure du canevas, c'est un parametre de l'instance ou il faut faire appel a une autre fonction ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.