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 :

probleme d'affichage d'une image


Sujet :

Tkinter Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut probleme d'affichage d'une image
    Bonjour a tous

    Je souhaite afficher une image
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    image = Image.open("images/cartes/1.png") 
    photo = ImageTk.PhotoImage(image)
    self.canf1 = Canvas(self.master, relief = 'ridge')
    self.canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
    self.canf1.create_image(0,0, anchor = tk.NW, image=photo)
    Ne voyant pas l'image je me demande si il y a au moins le canevas
    Etant gris sur gris et peut etre vide, est-il là?
    Je decide donc de le mettre en fond vert et plus grand
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.canf1 = Canvas(self.master, relief = 'ridge', bg = 'green', width = 150, height = 200)
    Ok je vois le canevas et il a l'air de la bonne taille....
    ...Mais pas d'image (qui est de 146x196)
    Je teste en ajoutant la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.canf1.geometry("150x200+0+0")
    Et la mon image apparaît....
    ...Mais avec une erreur suivante:
    AttributeError: 'Canvas' object has no attribute 'geometry'
    je ne comprend pas ce qu'il ce passe ou comment faire

  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 778
    Points
    36 778
    Par défaut
    Salut,

    Probablement parce que vous n'avez pas lu la FAQ?

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

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    j'ai lu cet article
    mais voulant mettre mon image dans un canevas je ne m'y suis pas intéressé plus que ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    photo = ImageTk.PhotoImage(Image.open("images/cartes/1.png"))
    self.canf1 = Label(self.master, image=photo, relief = 'ridge', bg = 'green', width = 150, height = 200)
    self.canf1.image = photo
    self.canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                ipady = 0,padx = 0,pady = 0,sticky = "")
    là oui ca marche pour un 'Label' mais pas pour un 'Canvas'

  4. #4
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par mathrix77 Voir le message
    là oui ca marche pour un 'Label' mais pas pour un 'Canvas'
    Le problème est dans le déréférencement de l'objet (PhotoImage) associé à la variable locale "photo".
    Si vous le stockez dans "self.canf1.image" sa durée de vie sera celle du widget, peu importe qu'il soit Canvas ou Label.

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

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    si je remplace Label par Canvas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.canf1 = Canvas(self.master, image=photo, relief = 'ridge', bg = 'green', width = 150, height = 200)
    ca ne marche pas
    _tkinter.TclError: unknown option "-image"

    Si vous le stockez dans "self.canf1.image" sa durée de vie sera celle du widget
    l'image est affiché en permanence, donc toujours 'en vie'
    je doit pas comprendre quelque chose

  6. #6
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par mathrix77 Voir le message
    l'image est affiché en permanence, donc toujours 'en vie'
    je doit pas comprendre quelque chose
    Afficher une image dans un Canvas, c'est via .create_image (comme dans votre premier post) car le Canvas étant plus complexe qu'un Label, çà permet de préciser la position, ....

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

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Oui et c'est bien le but d'avoir l'image dans un canevas

    Si j'ai bien compris,
    Avec un label, afin qu'il n'y ai pas de déférencement et que l'image reste en vie , je fait "self.canf1.image = photo"
    Et ca ne marche pas pour un canevas, ok

    Dans mon code du début l'image ne s'affiche pas à moins que je rajoute la ligne "self.canf1.geometry("150x200+0+0")"

    .geometry() qui n'est pas un attribut de Canvas (message d'erreur de IDLE)

    Mais alors pourquoi il affiche l'image?
    Et comment continuer à faire vivre l'image dans le canevas sans utiliser .geometry()?

    Merci pour votre aide

  8. #8
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par mathrix77 Voir le message
    Avec un label, afin qu'il n'y ai pas de déférencement et que l'image reste en vie , je fait "self.canf1.image = photo"
    Et ca ne marche pas pour un canevas, ok
    Ca marche aussi avec un Canvas (les objets sont des choses Python...). Mais pas en voulant afficher l'image dans le Canvas comme vous le faites pour un Label.

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

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    oui d'accord
    j'ai donc copier le code dans la faq du site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    image = Image.open("lenna.jpg")  
    photo = ImageTk.PhotoImage(image)  
    * 
    canvas = Tk.Canvas(root, width = image.size[0], height = image.size[1])  
    canvas.create_image(0,0, anchor = Tk.NW, image=photo) 
    canvas.pack()
    et j'applique au mien (j'ai retiré les self. par rapport au 1er code)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    image = Image.open("images/cartes/1.png")
    photo = ImageTk.PhotoImage(image)
    canf1 = Canvas(self.master, relief = 'ridge', bg = 'green', width = image.size[0], height = image.size[0])
    canf1.create_image(0,0,anchor = tk.NW, image = photo)
    canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
    j'ai bien mon canevas avec mon fond vert et la bordure
    mais pas d'image
    alors oui je fait un .grid() et pas pack(), mais sinon ca marche pas car tout est en .grid() dans mon code
    j'ai même testé avec width et height plus grand que mon image
    j'ai essayé dans create_image() de centrer plutôt que de demarrer en "NW"
    j'ai essayé un jpg plutôt qu'un png

    alors désole pour mon incompétence mais je vois pas

  10. #10
    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 778
    Points
    36 778
    Par défaut
    Salut,

    Citation Envoyé par mathrix77 Voir le message
    alors désole pour mon incompétence mais je vois pas
    Si l'exemple du FAQ fonctionne chez vous, avec la même image... C'est que dans votre code, le problème n'est pas dans les instructions que vous voulez bien montrer.

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

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    voici
    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    from tkinter import *
    import tkinter
    import tkinter as tk
    import sqlite3
    from random import randrange
    import socket
    import cherrypy
    import sqlite3
    import os.path
    import threading
    import time
    from PIL import Image, ImageTk 
     
    class principale(Frame):
        def __init__(self):
            Frame.__init__(self)
            self.master.title("principale")
            self.master.configure(bg = 'green')
            self.l, self.h = self.master.winfo_screenwidth(), self.master.winfo_screenheight()
            #self.master.overrideredirect(1)
            self.master.geometry("%dx%d+0+0" % (self.l/2, self.h/2))
     
            self.boutton1 = Button(self.master, text = "Demarrer", command = self.debutP)
            self.boutton1.grid(column = 9,row= 1,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.boutton2 = Button(self.master, text = "quitter", command = self.finP)
            self.boutton2.grid(column = 3,row= 1,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
     
            self.blind1 = Label(self.master, text = "Blinds")
            self.blind1.grid(column = 5,row= 1,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.blind2 = Label(self.master, text = "5/10", relief = 'ridge')
            self.blind2.grid(column = 7,row= 1,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.labtps1 = Label(self.master, text = "Temps :")
            self.labtps1.grid(column = 5,row= 2,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.labtps2 = Label(self.master, relief = 'ridge')
            self.labtps2.grid(column = 7,row= 2,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.labmess = Label(self.master, text = 'messages', relief = 'ridge')
            self.labmess.grid(column = 5,row= 4,columnspan = 4,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
            self.labpot = Label(self.master, text = 'pot', relief = 'ridge')
            self.labpot.grid(column = 6,row= 7,columnspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,rowspan = 1,sticky = "")
     
     
            image = Image.open("images/cartes/1.jpg")
            photo = ImageTk.PhotoImage(image)
            canf1 = Canvas(self.master, relief = 'ridge', bg = 'green', width = image.size[0], height = image.size[0])
            canf1.create_image(0,0,anchor = tk.NW, image = photo)
            canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
     
            #photo = ImageTk.PhotoImage(Image.open("images/cartes/dos2.png"))
            #self.canf1 = Label(self.master, image=photo, relief = 'ridge', bg = 'green', width = 150, height = 200)
            #self.canf1.image = photo
            #self.canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
            #            ipady = 0,padx = 0,pady = 0,sticky = "")
     
            photo2 = ImageTk.PhotoImage(Image.open("images/cartes/vide.png"))
            self.canf2 = Label(self.master, image=photo2, relief = 'ridge', bg = 'green', width = 150, height = 200)
            self.canf2.image = photo2
            self.canf2.grid(column = 5,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
     
     
            photo3 = ImageTk.PhotoImage(Image.open("images/cartes/18.png"))
            self.canf3 = Label(self.master, image=photo3,relief = 'ridge', bg = 'green', width = 150, height = 200)
            self.canf3.image = photo3
            self.canf3.grid(column = 6,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
     
            photo4 = ImageTk.PhotoImage(Image.open("images/cartes/18.png"))
            self.canf4 = Label(self.master, image=photo4, relief = 'ridge', bg = 'green', width = 150, height = 200)
            self.canf4.image = photo4
            self.canf4.grid(column = 7,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
     
            photo5 = ImageTk.PhotoImage(Image.open("images/cartes/18.png"))
            self.canf5 = Label(self.master, image=photo5, relief = 'ridge', bg = 'green', width = 150, height = 200)
            self.canf5.image = photo5
            self.canf5.grid(column = 8,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
     
     
            th_s = threadserveur()
            #th_s.start()
            #self.fen1 = parametre.commandeP()
     
     
        def debutP(self):
            th_d = threaddecompte(self.labtps2)
            th_d.run()
     
        def finP(self):
            self.master.destroy()
     
    if __name__ =="__main__":
        principale().mainloop()
    problème ligne 37 à 42 avec "self.canf1" ou que "canf1"
    après la ligne 50 les images en label s'affiche bien

    je pourrais très bien continuer avec les labels sans chercher plus loin, mais ce n'est pas la philosophie du site (comme celle de donner directement le code), n'y la mienne
    j'aimerais vraiment comprendre pour apprendre de mes échecs ou de mes (grosses) lacunes
    merci

  12. #12
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par mathrix77 Voir le message
    je pourrais très bien continuer avec les labels sans chercher plus loin, mais ce n'est pas la philosophie du site (comme celle de donner directement le code), n'y la mienne
    j'aimerais vraiment comprendre pour apprendre de mes échecs ou de mes (grosses) lacunes
    Ah ben... relisez la séquence d'opération que vous effectuez sur les "Label".
    Ligne 63 par exemple, avec photo2.
    Mettez en commentaire la ligne 65.
    Normalement, çà ne devrait plus fonctionner (côté affichage de la photo2).

    Cela fait... relisez la séquence qui commence ligne 50 avec le Canvas: où est l'équivalent de l'instruction de la ligne 65?

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

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    alors ok c'est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    image = Image.open("images/cartes/1.jpg")
    photo = ImageTk.PhotoImage(image)
    canf1 = Canvas(self.master, relief = 'ridge', bg = 'green', width = image.size[0], height = image.size[0])
    canf1.create_image(0,0,anchor = tk.NW, image = photo)
    canf1.image = photo
    canf1.grid(column = 4,row= 5,columnspan = 1, rowspan = 2,ipadx = 0,
                        ipady = 0,padx = 0,pady = 0,sticky = "")
    j'avais essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canf1.create_image.image = photo
    car c'est à cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    canf1.create_image(0,0,anchor = tk.NW, image = photo)
    qu'on donne l'image; comme ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    photo2 = ImageTk.PhotoImage(Image.open("images/cartes/vide.png"))
    self.canf2 = Label(self.master, image=photo2, relief = 'ridge', bg = 'green', width = 150, height = 200)
    self.canf2.image = photo2
    Mais je ne comprend pas pourquoi sur la faq, ce n'est pas le cas, pas de ".image" (j'ai tester ce bout de code et ca marche avec ma photo)
    Vous m'avez parler de laisser la photo en vie et de déférencement
    qu'est ce qui provoque cela dans mon code et qui m'oblige a ajouter ces lignes?
    Merci à vous

  14. #14
    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 778
    Points
    36 778
    Par défaut
    Citation Envoyé par mathrix77 Voir le message
    Mais je ne comprend pas pourquoi sur la faq, ce n'est pas le cas, pas de ".image" (j'ai tester ce bout de code et ca marche avec ma photo)
    Vous m'avez parler de laisser la photo en vie et de déférencement
    qu'est ce qui provoque cela dans mon code et qui m'oblige a ajouter ces lignes?
    Cet exemple là de la FAQ montre juste comment utiliser .create_image et ImageTk.PhotoImage de PIL et comme les variables utilisées (image et photo) sont globales, les objets qui ont été assignés ne seront "déréférencés" que si on leur assigne autre chose ou si on les détruit.
    L'exemple renvoie a l'article de la FAQ que je vous ai pointé en premier.
    On fait presque la même chose avec un autre widget sauf que la variable où sera stocké l'image sera locale à la fonction (comme dans votre cas). Et çà montre comment ajouter une référence dans un dictionnaire "global" (qui survivra après la sortie de la fonction).

    C'est aussi ce que vous faites avec la création d'un attribut ".image" dans le widget. Python laisse faire car c'est un langage pour des programmeurs qui sont supposés comprendre ce qu'ils font. Mais c'est une mauvaise pratique puisque vous ajoutez un attribut à un objet en risquant d'écraser un attribut existant. Il serait plus sain d'avoir un dictionnaire pour y stocker les différentes images.
    Un dictionnaire "global" fonctionne, mais un attribut de l'instance dédié à çà fonctionnera aussi.

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

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 55
    Points : 37
    Points
    37
    Par défaut
    Merci pour ces explications
    Je pense avoir compris

    PS:
    Citation Envoyé par wiztricks Voir le message
    Python laisse faire car c'est un langage pour des programmeurs qui sont supposés comprendre ce qu'ils font.
    - W

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

Discussions similaires

  1. [PHP 5.0] Probleme d'affichage d'une image dans SQL SERVER
    Par stentorus dans le forum Langage
    Réponses: 2
    Dernier message: 23/08/2010, 17h20
  2. probleme d'affichage d'une image
    Par elghadi_mohamed dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 23/04/2007, 16h25
  3. Probleme d'affichage d'une image dans un script cgi
    Par Jim_Nastiq dans le forum Web
    Réponses: 3
    Dernier message: 25/04/2006, 16h49

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