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

Tcl/Tk Discussion :

Déplacement de deux objets en même temps dans un canvas


Sujet :

Tcl/Tk

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2020
    Messages : 23
    Points : 23
    Points
    23
    Par défaut Déplacement de deux objets en même temps dans un canvas
    Bonjour,
    A la façon d'un explorateur, je souhaiterais déplacer une image png avec un texte dessous (comme un icone) dans un canvas en tcl tk.
    Voici le code:

    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
    .desk create text 50 150 -text $item -tag mobile
    .desk create image 150 50 -image monimg -tag mobile
     
    #One click on one icon
    .desk bind mobile <Button-1> {
            set selected [.desk find closest %x %y]
            set atx %x
            set aty %y
            }
     
    #One move icon
    .desk bind mobile <B1-Motion> {
            set changed_x [expr %x - $atx]
            set changed_y [expr %y - $aty]
            .desk move $selected $changed_x $changed_y
            set atx %x
            set aty %y
            }
    Mon souci c'est que je n'arrive pas à déplacer les deux (texte et image) en même temps.
    Auriez-vous une solution?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set selected [.desk find closest %x %y]
    retourne l'id de l'item sous la souris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .desk move $selected $changed_x $changed_y
    ne déplacera donc que le premier item sélectionné.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Bonsoir,

    La solution était assez proche :

    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
    proc grab { xo yo } {
        global cx cy
     set cx $xo
     set cy $yo
    }            
     
    proc drag { w xo yo id } {
        global cx cy
     set dx [expr {$xo - $cx}]
     set dy [expr {$yo - $cy}]
     $w move $id $dx $dy
     $w raise $id
     set cx $xo
     set cy $yo                
    }
     
    pack [canvas .desk -width 300 -height 200 -bg white]
     
    .desk create rect 10 10 60 30 -fill orange -tag mobile
    .desk create text 40 40 -text MON_ICONE -fill blue -tag mobile
     
    .desk bind mobile <Button-1> {grab %x %y }
    .desk bind mobile <B1-Motion> {drag .desk %x %y mobile}
    # .desk bind drag <B1-Motion> {drag .desk %x %y [.desk find closest %x %y]}

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    La solution proposée fonctionne et pourtant j'ai eu des difficultés à comprendre la dernière ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .desk bind drag <B1-Motion> {drag .desk %x %y [.desk find closest %x %y]}
    Ce qui m'a interpellé est le tagorid drag !

    j'ai testé sans mettre de valeur à tagorid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .desk bind <B1-Motion> {drag .desk %x %y [.desk find closest %x %y]}
    et ça marche aussi...

    Nul par dans les manuels je n'ai trouvé de réponse. Ne rien mettre ou mettre un tagorid # mobile fonctionne...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 42
    Points : 30
    Points
    30
    Par défaut
    Et finalement, cette ligne ne sert à rien. On l'enlève, ça fonctionne toujours !

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 528
    Points
    528
    Par défaut
    Bonsoir,

    C'est une oubli de ma part liée à différents essais !
    Cette ligne n'a pas lieu d'être et je l'ai mise en commentaire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Ajout dans deux tables en même temps asp.Net MVC3
    Par janyoura dans le forum ASP.NET MVC
    Réponses: 23
    Dernier message: 05/06/2013, 11h57
  2. Réponses: 6
    Dernier message: 31/08/2012, 15h44
  3. [AC-2007] Enregistrer dans deux tables en même temps.
    Par vadorequest dans le forum IHM
    Réponses: 4
    Dernier message: 24/02/2011, 09h09
  4. Insertion dans deux Tables en même temps
    Par hajoura89 dans le forum Développement Web en Java
    Réponses: 7
    Dernier message: 19/08/2010, 00h10
  5. [MySQL] insertion dans deux tab au méme temp
    Par marwen86 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/03/2010, 21h11

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