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

GTK+ avec Python Discussion :

Associer une image à un TreeStore et TreeView


Sujet :

GTK+ avec Python

  1. #1
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut [RESOLU] Associer une image à un TreeStore et TreeView
    Bonjour à tous,

    je suis actuellement en train de développer un logiciel avec PyGTK qui nécessite que j'assigne une image à chaque ligne d'un TreeView sous cette forme :

    #image# | Texte

    J'ai rajouté une colonne pour l'image. J'ai déjà essayé CellRendererPixbuf mais... c'est pas top.

    En faisant des recherches je suis tombé sur cette classe : http://faq.pygtk.org/index.py?file=f...1.htp&req=edit mais je n'arrive pas à l'utiliser au niveau du TreeStore.

    J'ai essayé le code suivant :
    self.treestore = gtk.TreeStore(image, str)
    mais il ne reconnait pas image.

    après lors du treestore.append(), je ne sais pas quel type mettre pour image (ou l'équivalent qui marche), que dois-je mettre ?

    Et pour finir, lors de la déclaration du CellRendererImage, il faut 2 arguments : col_index et tv_index, est-ce que cela correspondrait à la position sur mon Arbre ? Dans ce cas là il faut que j'assigne un CellRendererImage pour chaque nouvelle image ?


    Merci d'avance !

  2. #2
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Finalement j'ai décidé d'utiliser Cellrendererfrompixbuf.

    Je me suis donc intéressé au code suivant : http://faq.pygtk.org/index.py?req=sh...=faq13.006.htp .

    Par contre, j'obtiens l'erreur suivante :

    self.model.append([gtk.gdk.Pixbuf('res/send.png'), 'This is a string'])
    TypeError: Required argument 'has_alpha' (pos 2) not found


    Et là je bloque vraiment sur cette histoire de has_alpha...

    Merci d'avance !

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Salut,

    Es-tu sûr qu'on peut créer un pixbuf avec gtk.gdk.Pixbuf('res/send.png') ?
    Parce que normalement le constructeur d'un gtk.gdk.Pixbuf prend ces paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk.gdk.Pixbuf(colorspace, has_alpha, bits_per_sample, width, height)

    Moi j'utiliserais plutôt gtk.gdk.pixbuf_new_from_file('res/send.png')
    à la place.


    -

  4. #4
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Je ne suis sûr de rien comme je l'ai dit plus haut, j'ai copié le code que j'ai trouvé dans la FAQ : http://faq.pygtk.org/index.py?req=sh...=faq13.006.htp .
    Merci pour la solution, je l'essaie dès que possible.

  5. #5
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    J'ai essayé et j'obtiens cela : main.py:222: Warning: unable to set property `markup' of type `gchararray' from value of type `GdkPixbuf'
    gtk.main()

    après de multiples recherches google... je ne trouve pas ce qui pourrait causer ça.

    Mon code :

    self.model = gtk.ListStore(gtk.gdk.Pixbuf, str)

    for t in tw:
    self.model.append([gtk.gdk.pixbuf_new_from_file('images/send.png'), 'This is a string'])


    On va y arriver !

  6. #6
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Ton erreur vient d'ailleurs ; tu essaie de mettre un Pixbuf dans une variable qui n'accepte que du texte (gchararray).

    Je penche pour un problème lors de la construction du TreeView.

    Lorsque tu crées la TreeViewColumn associée au Pixbuf, as-tu bien pensé à utiliser un gtk.CellRendererPixbuf au lieu d'un gtk.CellRendererText ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    self.treeview = gtk.TreeView()
     
    self.model = gtk.ListStore(gtk.gdk.Pixbuf, str)
    for t in tw:
        self.model.append([gtk.gdk.pixbuf_new_from_file('images/send.png'), 'This is a string'])
    self.treeview.set_model(self.model)
     
    column0 = gtk.TreeViewColumn('Image', gtk.CellRendererPixbuf(), pixbuf=0)
    self.treeview.append_column(column0)
     
    column1 = gtk.TreeViewColumn('Texte', gtk.CellRendererText(), text=1)
    self.treeview.append_column(column1)

    PS : y'a des coquilles dans la FAQ : il faut remplacer la variable "cell" par "renderer" (ou l'inverse), et la méthode pour créer le Pixbuf n'est pas bonne non plus (voir mon message précédent)


    -

  7. #7
    Membre émérite
    Avatar de mitkl
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2010
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 364
    Par défaut
    Ca fonctionne, merci beaucoup, j'avais juste oublié le pixbuf = 0 comme troisième paramètre de ColumnView!

Discussions similaires

  1. [HTML] associer une image à un bouton
    Par info_plus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 19/07/2007, 14h59
  2. "Associer" une image a un JPanel
    Par SAKDOSS dans le forum 2D
    Réponses: 2
    Dernier message: 22/05/2007, 08h50
  3. [MySQL] associer une image à une fiche
    Par gmorin dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/05/2007, 13h24
  4. erreur : associer une image à une Ctrlist
    Par jerry72000 dans le forum MFC
    Réponses: 1
    Dernier message: 09/03/2007, 17h11
  5. Réponses: 81
    Dernier message: 26/11/2006, 14h23

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