Buenas,

2012/1/14 Jose Sanchez <[email protected]>:
> ¿Como se podría poner una imagen de fondo en un contenedor?
>
> Da igual el tipo que sea:
> gtk.EventBox(), gtk.HBox() o gtk.VBox.
> Con que en uno de ellos se pueda suficiente.

Para gtk+ v2.x tienes la respuesta en:
http://faq.pygtk.org/index.py?req=all#8.21

Copio el código:
##########################################################################
pixbuf = gtk.gdk.pixbuf_new_from_file("/path/to/img.png")

def expose(widget, event, pixbuf):
    widget.window.draw_pixbuf(widget.style.bg_gc[gtk.STATE_NORMAL],
pixbuf, 0, 0, 0, 0)
    if widget.get_child() is not None:
        widget.propagate_expose(widget.get_child(), event)
    return True

win = gtk.Window()
win.set_size_request(768, 32)
win.connect("delete-event", gtk.main_quit)

evbox = gtk.EventBox()
evbox.connect('expose_event', expose, pixbuf)

hbox = gtk.HBox(False, 10)
l1 = gtk.Label("tururu 1")
hbox.pack_start(l1, True, True, 0)
l2 = gtk.Label("tururu 2")
hbox.pack_start(l2, True, True, 0)
l3 = gtk.Label("tururu 3")
hbox.pack_start(l3, True, True, 0)
evbox.add(hbox)
win.add(evbox)

win.show_all()
gtk.main()
##########################################################################

La base de la solución pasa por conectar la señal "expose" (que se
encarga de redibujar los contenidos del widget) en la que pintas la
imagen.
Además, como las ni VBox ni HBox permiten conectar señales, lo
envuelves en un EventBox.
En gtk+ v3.x es similar procedimiento, pero el nombre de la señal ha cambiado.


Espero que te sea de ayuda.

Saludos,
Iñigo Serna
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a