Partage
  • Partager sur Facebook
  • Partager sur Twitter

supprimer uniquement des cercles (tkinter)

Sujet résolu
    28 décembre 2014 à 11:24:44

    Bonjour a tous.

    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 ?

    • Partager sur Facebook
    • Partager sur Twitter
    Si c'était facile, tout le monde le ferait.
    Anonyme
      28 décembre 2014 à 12:35:00

      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.

      • Partager sur Facebook
      • Partager sur Twitter
        28 décembre 2014 à 13:46:40

        merci beaucoup c'est tout ce que je voulais savoir.

        Sujet resolu :)

        • Partager sur Facebook
        • Partager sur Twitter
        Si c'était facile, tout le monde le ferait.
          28 décembre 2014 à 14:00:44

          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 ?
          • Partager sur Facebook
          • Partager sur Twitter
          Si c'était facile, tout le monde le ferait.
          Anonyme
            28 décembre 2014 à 15:03:44

            C'est un paramètre de create_oval

            • Partager sur Facebook
            • Partager sur Twitter

            supprimer uniquement des cercles (tkinter)

            × 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.
            • Editeur
            • Markdown