[Python-es] como puedo hacer un gtk.eventbox invisible dentro de una ventana transparente?

Chema Cortes pych3m4 en gmail.com
Lun Ago 27 02:18:13 CEST 2012


El día 26 de agosto de 2012 23:06, xiao xiong mao panda rojo
<ailurus.fulgens en hotmail.com> escribió:

> hice una ventana transparente usando python gtk y cairo
> le agregue unos botones pero se ven feos
> así que agregue imágenes directamente en lugar de los botones. se ven bien ,
> incluso las imagenes con canal alpha con las .png y los .gif animados
> funcionan y parecen flotar en la ventana
> pero las imagenes gtk.image() no tiene eventos "clicked" asi que las puse
> dentro de una eventbox gtk.eventbox()
> ahora puedo detectar los clicks pero la imagen termina en un rectángulo no
> transparente
> hay alguna forma de hacer el eventbox transparente?
> o pintable?
> o agregar eventos del mouse a las imágenes?
> alguna idea???

Puedes ocultar los eventboxes, con lo que sólo se dedican a atrapar eventos:

  e = gtk.EventBox()
  e.set_visible_window(False)
  e.add(ima3)


Sería mucho mejor si te acostumbras desde el principio a usar
programación orientada a objetos para estas cosas:

class ImageButton(gtk.EventBox):
    def __init__(self, image):
        gtk.EventBox.__init__(self)
        self.set_visible_window(False)
        img=gtk.Image()
        img.set_from_file(image)
        self.add(img)
        self.connect("button_press_event",self.clicked)

    def click(self,widget,event):
        print("Pulsado:",event.x,event.y)




-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


Más información sobre la lista de distribución Python-es