Viernes, Mayo 24, 2019

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 176 invitados y ningún miembro en línea

Contador de Visitas

9736696
Hoy Hoy 576
Ayer Ayer 2123
Esta semana Esta semana 8290
Este mes Este mes 43380
Total de Visitas Total de Visitas 9736696

Día con más
visitantes

05-06-2019 : 2257

Gracias por su visita