Martes, Septiembre 19, 2017

Cuadros de diálogo transparentes con Python y Gtk+

Cuadros de diálogo transparentes con Python y Gtk+

Hace ya algún tiempo que vengo haciendo uso de los diálogos transparentes en Python junto con Gtk+, con varias soluciones, como pueden ser los widgets en My-Weather-Indicator o bien la presentación de imágenes en Picapy.

Se trata de una técnica relativamente sencilla, pero que da resultados mas que interesantes como los comentados. Esto puede desarrollarse todavía mas si incluimos lo comentado en el artículo Picapy minimalista gracias a css sobre el uso de css en aplicaciones con Gtk+ y Python.

Cuadros de diálogos transparentes

Para realizar cuadros de diálogos transparentes, tenemos que crear una clase heredera de Gtk.Window, y en el init de la misma, definir los siguientes parámetros,

1
2
3
4
5
6
7
    self.set_decorated(False)
    self.set_app_paintable(True)
    screen = self.get_screen()
    visual = screen.get_rgba_visual()
    if visual and screen.is_composited():
        self.set_visual(visual)
    self.connect('draw', self.on_expose, None)

El siguiente paso será modificar on_expose,

1
2
3
4
5
6
        def on_expose(self, widget, cr, data):
        cr.save()
        cr.set_operator(cairo.OPERATOR_CLEAR)
        cr.rectangle(0.0, 0.0, *widget.get_size())
        cr.fill()
        cr.restore()

En el caso de Picapy, lo que hice fue que la ventana ocupara toda la pantalla,

1
    self.fullscreen()

y para que la parte de atrás aparezca mas oscurecida, he añadido algo de código al método on_expose, al final del mismo, que lo que hace simplemente es dibujar un rectángulo con el color negro y el canal alfa al 80%

1
2
3
    cr.set_source_rgba(0.0,0.0,0.0,.8)
    cr.rectangle(0,0, *widget.get_size())
    cr.fill()

Conclusiones

Como ves se trata de algo realmente sencillo, pero que te da muchas posibilidades a la hora de crear tus propios interfaces personalizados. Esto te permite desde presentar una imagen con texto, o bien la típica ventana que aparece al inicio de una aplicación donde indica el nombre de la misma, versión, etc…, o otro tipo de acciones mas interesantes, como pueden ser animaciones, presentaciones, etc…

 

Fuente: atareao

Compártelo. ¡Gracias!

 
Grupo Digital de Ayuda! Laboratorio Linux! - Linux para todos.

¿Quién está en línea?

Hay 53 invitados y ningún miembro en línea

Contador de Visitas

8961847
Hoy Hoy 1158
Ayer Ayer 1200
Esta semana Esta semana 2358
Este mes Este mes 21713
Total de Visitas Total de Visitas 8961847

Día con más
visitantes

07-19-2017 : 1525

Gracias por su visita