hola a todos esta es mi primera ves en una mailList y espero no meter la pata XD 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???
información extra: trabajo con ubuntu 10.04 python 2.7 gnome 2.3 para k lo vean mejor les dejo el codigo. usen una imagen pequeña, puede ser animada o .png con partes transparentes o solidas #!/usr/bin/env python import sys import gobject import pango sys.path[:0] = ['/usr/local/lib/python2.4/site-packages/gtk-2.0'] import pygtk pygtk.require('2.0') import gtk from gtk import gdk import cairo if gtk.pygtk_version < (2,9,0): print "PyGtk 2.9.0 or later required" raise SystemExit supports_alpha = False def ejemplo(widget,event,data="....."): print data def expose(widget, event): global supports_alpha cr = widget.window.cairo_create() if supports_alpha == True: cr.set_source_rgba(0, 0, 0, 0.6) # Transparent else: cr.set_source_rgb(1.0, 1.0, 1.0) # Opaque white # Draw the background cr.set_operator(cairo.OPERATOR_SOURCE) cr.paint() cr.fill() cr.stroke() return False def screen_changed(widget, old_screen=None): global supports_alpha # To check if the display supports alpha channels, get the colormap screen = widget.get_screen() colormap = screen.get_rgba_colormap() if colormap == None: print 'Your screen does not support alpha channels!' colormap = screen.get_rgb_colormap() supports_alpha = False else: print 'Your screen supports alpha channels!' supports_alpha = True # Now we have a colormap appropriate for the screen, use it widget.set_colormap(colormap) return False def main(args): win = gtk.Window() win.set_title('Alpha Demo') win.connect('delete-event', gtk.main_quit) win.set_app_paintable(True) win.connect('expose-event', expose) win.connect('screen-changed', screen_changed) win.set_decorated(True) win.add_events(gdk.BUTTON_PRESS_MASK) win.set_default_size(920,460) #win.connect('button-press-event', clicked) screen_changed(win) hbox = gtk.HBox(False,0) ima = gtk.Image() ima.set_from_file("folder_orange_open.png") bot = gtk.Button() bot.connect("clicked",ejemplo,"folder_orange_open.png") bot.add(ima) hbox.pack_start(bot,False,False,20) ima2 = gtk.Image() ima2.set_from_file("folder_orange_open.png") hbox.pack_start(ima2,False,False,20) ima3 = gtk.Image() ima3.set_from_file("folder_orange_open.png") e = gtk.EventBox() e.add(ima3) e.connect("button_press_event",ejemplo,"eventbox") hbox.pack_start(e,False,False,20) vbox = gtk.VBox(False,0) vbox.pack_start(hbox,False,True,50) win.add(vbox) win.show_all() gtk.main() return True if __name__ == '__main__': sys.exit(main(sys.argv))
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/