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

Tkinter Python Discussion :

Déplacer une image


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut Déplacer une image
    Bonjour à tous,

    Cela fait désormais plusieurs jours que je consacre environ 3h à mon projet informatique, le but est de faire quelque chose de pédagogique sur le tri sélectif (mais ça, on s'en fout ). Le problème, c'est que je suis coincé pour déplacer des images. J'ai 6 images à faire déplacer au total, et j'ai eu beau chercher sur le net, je n'ai rien trouvé ... J'ai bien trouvé une méthode, mais elle ne s'applique pas pour les images car il faut 4 coordonnées (comme un carré quoi), alors que les images n'en ont que 2 ... Si quelqu'un peut m'aider, ça serait magnifique !!! J'ai pensé à une méthode, mais je ne sais pas si elle est réalisable, et si elle est correcte, ça serait de créer des rectangles sous les images et de lier le rectangle avec l'image (comment faire, je ne sais pas ...). Voilà, en espérant qu'une âme charitable me donnera un peu de son temps ^^
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Salut,

    Je vous suggère de regarder ce lien.
    .coords retourne les coordonnées du point en haut à gauche d'une image. Ses dimensions sont connues par ailleurs. Déplacer l'image via move (relatif) ou moveto(absolu, voir lien) devrait suffire pourvu qu'on utilse l'identifiant de l'objet retourné par .create_image.

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut
    je vais essayer tout ça !!! je vous tiens au courant, en tous cas, merci !

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut
    rebonjour, j'ai eu beau lire et relire le lien que vous m'avez déposé, je n'ai pas réussi à utiliser move et moveto dans mon programme, enfaite, je n'ai pas compris son principe (désolé, je démarre depuis peu ...), de plus, j'ai essayé différentes méthodes qui se sont toutes avérées vaines ... Je crois que ce programme va me faire péter un câble !!!

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Citation Envoyé par jojodugard Voir le message
    rebonjour, j'ai eu beau lire et relire le lien que vous m'avez déposé, je n'ai pas réussi à utiliser move et moveto dans mon programme, enfaite, je n'ai pas compris son principe (désolé, je démarre depuis peu ...), de plus, j'ai essayé différentes méthodes qui se sont toutes avérées vaines ... Je crois que ce programme va me faire péter un câble !!!
    Il faut d'abord apprendre à les utiliser "en dehors" de votre programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import tkinter as tk
    >>> root = tk.Tk()
    >>> canvas = tk.Canvas()
    >>> canvas.pack()
    >>> iid = canvas.create_oval(10, 10, 100, 100, fill='grey50')
    >>> canvas.move(iid, 10, 10)
    >>> canvas.move(iid, 10, 10)
    Une fois que vous aurez l'impression d'avoir compris quelque chose, il faudra imaginer les modifications à faire dans votre programme.
    Puis essayer de les réaliser...

    De toutes façons, si vous ne montrez pas comment vous essayez de vous y prendre (en postant du code), pas facile de faire plus que "compatir" (ce qui vous fera une belle jambe à accrocher au bout du câble pété).

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

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut
    J'ai recopié votre code mais il ne fonctionne pas ... (à cause de ma version de python ? J'ai la version 2.7 car j'ai besoin de la bibliothèque PIL ...). Je vais vous poster le code que j'ai fais jusqu'à présent, mais je n'ai pas sauvegardé avec la méthode move car ça ne marchait pas ... Enfaite, le but du programme, c'est de déplacer des images dans des "poubelles" et après, faire que si l'image est dans la bonne poubelle, elle disparaît (mais j'en suis pas encore là ...) :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    from Tkinter import *
    from PIL import Image, ImageTk
     
    def poubelle_1():
        can1.create_rectangle(10,250,300,600,fill='yellow')
        can1.create_rectangle(20,280,290,500,fill='black')
     
    def poubelle_2():
        can1.create_rectangle(400,250,700,600,fill='green')
        can1.create_rectangle(410,280,690,500,fill='black')
     
    def poubelle_3():
        can1.create_rectangle(790,250,1090,600,fill='grey')
        can1.create_rectangle(800,280,1080,500,fill='black')
     
    def clic(event):
        global DETECTION_CLIC_SUR_OBJET
        X = event.x
        Y = event.y
        [xmin,ymin,xmax,ymax] = can1.coords(IMAGE_1)
        [xmin1,ymin1,xmax1,ymax1] = can1.coords(IMAGE_2)
        [xmin2,ymin2,xmax2,ymax2] = can1.coords(IMAGE_3)
        [xmin3,ymin3,xmax3,ymax3] = can1.coords(IMAGE_4)
        [xmin4,ymin4,xmax4,ymax4] = can1.coords(IMAGE_5)
        [xmin5,ymin5,xmax5,ymax5] = can1.coords(IMAGE_6)
        if xmin<=X<=xmax and ymin<=Y<=ymax or xmin1<=X<=xmax1 and ymin1<=Y<=ymax1 or xmin2<=X<=xmax2 and ymin2<=Y<=ymax2 or xmin3<=X<=xmax3 and ymin3<=Y<=ymmax3 or xmin4<=X<=xmax4 and ymin4<=Y<=ymax4 or xmin5<=X<=xmax5 and ymin5<=Y<=ymax5 : DETECTION_CLIC_SUR_OBJET = True
        else : DETECTION_CLIC_SUR_OBJET = False
     
    def drag(event):
        X = event.x
        Y = event.y
        if DETECTION_CLIC_SUR_OBJET == True :
            if X<0: X=0
            if X>1100: X=1100
            if Y<0: Y=0
            if Y>600: Y=600
            can1.coords(IMAGE_1,X-128,Y-190,X+128,Y+190)
            can1.coords(IMAGE_2,X-123,Y-184,X+123,Y+184)
            can1.coords(IMAGE_3,X-239,Y-194,X+239,Y+194)
            can1.coords(IMAGE_4,X-200,Y-200,X+200,Y+200)
            can1.coords(IMAGE_5,X-108,Y-180,X+108,Y+180)
            can1.coords(IMAGE_6,X-188,Y-188,X+188,Y+188)
     
    DETECTION_CLIC_SUR_OBJET = False
    fen1 = Tk()
    image = Image.open("banane_petite.jpg")
    image1 = Image.open("bouteille_verre.jpg")
    image2 = Image.open("carton.jpg")
    image3 = Image.open("bouteille_plastique.jpg")
    image4 = Image.open("canette.jpg")
    image5 = Image.open("journal.jpg")
    photo = ImageTk.PhotoImage(image)
    photo1 = ImageTk.PhotoImage(image1)
    photo2 = ImageTk.PhotoImage(image2)
    photo3 = ImageTk.PhotoImage(image3)
    photo4 = ImageTk.PhotoImage(image4)
    photo5 = ImageTk.PhotoImage(image5)
    can1 = Canvas(fen1,bg='white',height=600,width=1100)
    IMAGE_1 = can1.create_image(60,100,image=photo)
    IMAGE_2 = can1.create_image(200,100,image=photo1)
    IMAGE_3 = can1.create_image(360,100,image=photo2)
    IMAGE_4 = can1.create_image(560,100,image=photo3)
    IMAGE_5 = can1.create_image(750,100,image=photo4)
    IMAGE_6 = can1.create_image(950,100,image=photo5)
    can1.bind('<Button-1>',clic)
    can1.bind('<B1-Motion>',drag)
    can1.focus_set()
    can1.pack(side=TOP)
    poubelle_1()
    poubelle_2()
    poubelle_3()
    bou1 = Button(fen1,text='Quitter',command=fen1.quit)
    bou1.pack(side=BOTTOM)
    fen1.mainloop()
    fen1.destroy()

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

Discussions similaires

  1. déplacer une image
    Par xeland dans le forum Windows
    Réponses: 7
    Dernier message: 13/02/2008, 14h33
  2. Déplacer une image dans un formulaire
    Par WITER dans le forum IHM
    Réponses: 2
    Dernier message: 01/11/2007, 03h47
  3. Déplacer une image non téléchargée
    Par Asmodean dans le forum Langage
    Réponses: 1
    Dernier message: 05/07/2007, 12h27
  4. Déplacer une image
    Par prgasp77 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/05/2007, 17h35
  5. Déplacer une image
    Par rikku84 dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 19/04/2007, 02h00

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