Crear un IconView

gtkPython

Lo siguiente es un ejemplo mínimo de cómo se usa el widget gtk.IconView, añadiendo iconos desde ficheros nuestros (sin usar los iconos de stock). Para ver cómo usar los iconos de stock puedes consultar (Py)GTK Tips 'n Tricks

import gobject
import pygtk
import gtk
import gtk.glade
import gtk.gdk
 
# creo el iconview
iconview = gtk.IconView()
iconview.set_orientation(gtk.ORIENTATION_HORIZONTAL)
 
# le indico qué columna del liststore tiene el texto, y cuál el icono
iconview.set_text_column(1)
iconview.set_pixbuf_column(0)
 
# pongo un scrolledwindow, para que quede más bonito
scroll = gtk.ScrolledWindow()
scroll.set_policy(gtk.POLICY_ALWAYS, gtk.POLICY_ALWAYS)
 
# defino los tipos a representar
liststore = gtk.ListStore(gtk.gdk.Pixbuf, gobject.TYPE_STRING)
 
# creo los iconos
debian  = gtk.gdk.pixbuf_new_from_file("debian-icon.png")
apple   = gtk.gdk.pixbuf_new_from_file("apple-icon.png")
windows = gtk.gdk.pixbuf_new_from_file("windows-icon.png")
fedora  = gtk.gdk.pixbuf_new_from_file("fedora-icon.png")
 
# añado los datos al liststore
liststore.append([debian, "string 1"])
liststore.append([fedora, "string 2"])
liststore.append([windows, "string 3"])
liststore.append([apple, "string 4"])
liststore.append([debian, "string 1"])
liststore.append([fedora, "string 2"])
liststore.append([windows, "string 3"])
liststore.append([apple, "string 4"])
liststore.append([debian, "string 1"])
liststore.append([fedora, "string 2"])
liststore.append([windows, "string 3"])
liststore.append([apple, "string 4"])
liststore.append([debian, "string 1"])
liststore.append([fedora, "string 2"])
liststore.append([windows, "string 3"])
liststore.append([apple, "string 4"])
 
iconview.set_model(liststore)
scroll.add(iconview)
 
win = gtk.Window()
win.resize(320, 240)
win.add(scroll)
win.show_all()
 
gtk.main()