IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

glisser déposer TKinter


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 25
    Points : 13
    Points
    13
    Par défaut glisser déposer TKinter
    Bonjour, je suis en train de créer un jeu d'échecs avec des pièce qui se déplacent par glisser déposer. j'ai suivi de nombreux tutoriels afin de comprendre comment ça marche et j'ai donc réussi a écrire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    label = Label(fenetre, text="")
    label.pack(anchor="nw")
     
    class DragManager():
        def add_dragable(self, widget):
            c_echecs.tag_bind(widget, "<ButtonPress-1>", self.on_start)
            c_echecs.tag_bind(widget, "<B1-Motion>", self.on_drag)
            c_echecs.tag_bind(widget, "<ButtonRelease-1>", self.on_drop)
     
        def on_start(self, event):
            c_echecs.configure(cursor="hand2")
            pass
     
        def on_drag(self, event):
            global dame_n1
            pion_n1, cava_n1, fou_n1, tour_n1, dame_n1, roi_n1, pion_b1, cava_b1, fou_b1, tour_b1, dame_b1, roi_b1 = importation_pionsV1()
            img = c_echecs.create_image(event.x, event.y, image=dame_n1)
     
            label.config(text="x:" + str(event.x) + "y:" + str(event.y))
            pass
     
        def on_drop(self, event):
            c_echecs.configure(cursor="")
            for lig in range(8):
                for col in range(8):
                    if (lig*80) <= event.y <= ((lig+1)*80) and 40+(col*80) <= event.x <= 40+((col+1)*80):
                        d_n = c_echecs.create_image(80+(col*80), 40+(lig*80), image=dame_n1)
     
    dragndrop = DragManager()
    dragndrop.add_dragable(d_n)
    Mais j'ai deux problèmes:
    le premier et le plus important est que après un premier glisser déposer je ne peut plus recommencer
    le second est que lorsque je dépose la pièce elle doit aller au centre de la case demandée, ce qu'elle fait bien(en se dupliquant), mais elle reste également a l'endroit ou je l'ai déposée.
    Merci d'avance.

    Si vous avez besoin d'essayer le programme complet demandez moi.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Chipster_25 Voir le message
    Si vous avez besoin d'essayer le programme complet demandez moi.
    Normalement le glisser déposer est une fonctionnalité qui se travaille "à part": c'est juste une interaction de l'utilisateur avec des widgets et/ou des items d'un Canvas.
    Après côté code, vous avez déjà des moutures existantes (pour s'en inspirer) comme celle ci.

    Donc pour avancer, il faudrait déjà présenter le problème à résoudre (après avoir regardé comment ont fait vos prédécesseurs).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Chipster_25 Voir le message
    Voici les programmes complets en pièce jointe
    J'espère (pour vous) que ça inspirera quelqu'un...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Je pensait qu'il vous aideraient a me donner une solution a mon problème...

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Je veux bien vous aider à construire une solution car c'est la base de la programmation... pour ce qui de vous la donner, cherchez sur Internet, il y a certainement des codes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2023
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2023
    Messages : 25
    Points : 13
    Points
    13
    Par défaut
    Je sais bien qu'il y a beaucoup de codes de drag and drop en ligne mais beaucoup ne correspondent pas a mon cas (plusieurs images dans un canvas) et même après en avoir consulté des dizaines je n'arrive pas a régler le problème de ne pas pouvoir drag and drop une deuxième fois la même image et je ne sait pas ou se trouve l'erreur car il n'y a pas de messages d'erreur et je ne voit rien qui puisse causer ce problème (j'ai réussi a régler le problème de l'image qui se duplique en la relâchant)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    class DragManager:
        def add_dragable(self, widget):
            c_echecs.tag_bind(widget, "<ButtonPress-1>", self.on_start)
            c_echecs.tag_bind(widget, "<B1-Motion>", self.on_drag)
            c_echecs.tag_bind(widget, "<ButtonRelease-1>", self.on_drop)
     
        def on_start(self, event):
            c_echecs.configure(cursor="hand2")
            pass
     
        def on_drag(self, event):
            global dame_n1
            pion_n1, cava_n1, fou_n1, tour_n1, dame_n1, roi_n1, pion_b1, cava_b1, fou_b1, tour_b1, dame_b1, roi_b1 = importation_pionsV1()
            d_n = c_echecs.create_image(event.x, event.y, image=dame_n1)
            pass
     
        def on_drop(self, event):
            global d_n
            c_echecs.configure(cursor="")
     
            for lig in range(8):
                for col in range(8):
                    if (lig * 80) <= event.y <= ((lig + 1) * 80) and 40 + (col * 80) <= event.x <= 40 + ((col + 1) * 80):
                        global dame_n1
                        pion_n1, cava_n1, fou_n1, tour_n1, dame_n1, roi_n1, pion_b1, cava_b1, fou_b1, tour_b1, dame_b1, roi_b1 = importation_pionsV1()
                        d_n = c_echecs.create_image(80 + (col * 80), 40 + (lig * 80), image=dame_n1)
     
     
    dragndrop = DragManager()
    dragndrop.add_dragable(d_n)

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Chipster_25 Voir le message
    Je sais bien qu'il y a beaucoup de codes de drag and drop en ligne mais beaucoup ne correspondent pas a mon cas
    Ce sont des codes à étudier pour comprendre comment ils fonctionnent et s'en inspirer... Ce qui peut prendre un temps +/- long suivant son niveau de départ... mais c'est comme çà qu'on programme.
    Après si vos vouez de l'aide, ben, il faut partir d'un petit exemple fonctionnel(*) ou vous vous êtes concentré sur ce détail là.
    (*) ce qui veut dire que si je copie le code et que je le lance, je reproduis le soucis.
    Sinon on va écrire un exemple qui n'aura pas plus de chance de correspondre à vos attentes que ceux qui existent déjà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 3.X] Glisser-déposer entre deux treeview tkinter
    Par vad92 dans le forum Général Python
    Réponses: 10
    Dernier message: 20/02/2022, 14h01
  2. Réponses: 9
    Dernier message: 13/02/2015, 22h08
  3. Glisser-déposer avec Tkinter? (Tkdnd?)
    Par tyrtamos dans le forum Tkinter
    Réponses: 2
    Dernier message: 17/07/2008, 09h53
  4. Glisser déposer sur formulaire
    Par norvel dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 11h20
  5. [MFC] Glisser/Déposer dans une CView
    Par octopus984 dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2005, 10h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo