Partage
  • Partager sur Facebook
  • Partager sur Twitter

Précisions sur la fonction delete()

Sujet résolu
    12 février 2017 à 20:29:28

    Bonsoir tout le monde ^^

    Sous Tkinter, avec un canvas:

    Je créer des rectangles qui ont tous untag différent, et lorsqu'il y en a un certain nombre, il sont supprimés au fur et à mesure (jeu du snake).

    Pour les supprimer, j'utilise la fonction delete, avec un numéro qui s'incrémente, correspondant au tag d'un rectangle à chaque fois.

    Le truc, c'est que je crée une image de fond avant de faire ça. Or, même si je lui attibue une string commetag ou...nimp en fait, la fonction

    delete(1) supprime toujours ET l'image de fond, ET le rectangle ayant le tag associé.

    En réfléchissant et en testant un peu je me suis dis que delete() correspondait à l'historique de créations des l'items, d'où delete(1) supprime mon image car c'est le premier item créer.

    Mais mm avec cela je n'explique pas comme delete() supprime  ET l'image de fond, ET le rectangle mais BREF.

    Y aurais-il une fonction qui supprime/détruit/enlève un objet avec (et uniquement) sontag. (PS: j'ai cherché dans le help(tkinter) de python mais j'ai pas trouvé)

    Merci d'avance ^^ :D

    PS: si j'ai faux sur ma compréhension de la fonction delete() n'hésitez surtout pas à me le dire ;)

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      12 février 2017 à 20:54:11

      delete prend en paramètre l'item créé, à partir de là on peut pas se tromper, suffit de connaître le nom de l'item...

      EDIT: Pour précision, avoir le nom de l'item à un endroit spécifique, on utilise la méthode find_closest.

      -
      Edité par Anonyme 12 février 2017 à 20:59:50

      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2017 à 21:03:27

        D'accord merci ^^

        Une commande pour supprimer un item en fonction de son tag?

        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2017 à 21:08:34

          Ouai, j'ai vu ca en lisant la docs tkinter mais "Removes the given tag from all matching items." Ca veut dire quoi? qu'il va enlevé le tag donnée des items coresspondant?

          Ps: j'avou ducoup j'ai pas pris la peine de teste

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            12 février 2017 à 21:22:36

            Oui mais un tag c'est donner un nom aux différents item, non ? Par ex: 'pomme_1', 'pomme_2', ... Normalement les tags ne sont pas très utiles dans ton cas, pourquoi pas juste travailler avec les items ?
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2017 à 22:26:42

              Oui c'est le principe.

              Si, les tag sont utils parce que les carrées sont créez et détruit selon de multiples cas de figure. Untag permettais d'être sûr de l'item supprimé.

              Mais si c'est pas possible de supprimer un truc en f(tag), alors je vois pas l'utilité de ceux ci...

              a+

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                12 février 2017 à 22:33:35

                Chaque item est différent, même s'ils sont des mêmes figures, pas besoin de tags, se sont à la place de noms différents (tags), des flottants différents.

                Il suffit de récupérer l'item représenté par un flottant via la méthode find_closest à tel endroit du canvas, et il t'indique l'item. Maintenant les tags permettent de mieux s'organiser quand le code devient complexe, long et difficile à lire.

                • Partager sur Facebook
                • Partager sur Twitter
                  13 février 2017 à 0:46:10

                  Yep

                  Non mais je suis d'accord que ça marche, mais c'est trop aléatoire, surtout que find_closest peut renvoyer le mauvais truc (dans mon cas  ca peut arriver)

                  Et oui, mon code est complexe, long et difficile à lire XD

                  Edit: J'ai trouvé, la fonction delete() peut prendre en argument canvas.find_withtag(), qui permet de supprimer un élément de canvas avec son tag. Merci quand même, passe en résolut :)

                  -
                  Edité par Titou210Titou 13 février 2017 à 1:51:01

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Précisions sur la fonction delete()

                  × 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