Python + GTK3 – Glade

Hace unos años atrás, le dedique una entrada a Eric, un IDE para python, y vimos lo básico para crear/usar una GUI bajo QT.

Ahora, lo mismo pero usando GTK, diseñando en Glade. Específicamente una ventana que muestra google en un navegador, y un botón que dice hola por consola.

Primero, y lo más importante … tener instalado Glade en su sistema.

Segundo, creamos una interfaz arrastrando y soltando controles dentro, algo así: Selección_007

Ahora, fijamos los eventos (click al botón) : Selección_008

Guardamos y vamos a python. Mi estructura es así: Selección_009

Donde autenticar.glade es el archivo que creamos en glade y Twittukos.py es el archivo raíz.

Entonces, en Twittukos.py tengo lo siguiente:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'Mario Cares <mcares@puertosolutions.cl>'

try:
    with open('config/credenciales.js'): pass
    print 'hola'
except IOError:
    print 'Credenciales no existen ! Cargando Autorizacion'
    from Ventanas.Autentificacion import Class_Autentificacion
    ventana = Class_Autentificacion()
    ventana.mostrar()

Lo que hace el código es buscar un archivo. Si no lo encuentra llama a una clase y ejecuta su evento mostrar.

En dicha clase, tengo lo siguiente:

__author__ = 'Mario Cares <mcares@puertosolutions.cl>'

try:
    from gi.repository import Gtk
    from gi.repository import WebKit
except:
    print 'GTK o WebKit no disponible'

class Class_Autentificacion:

    def mostrar(self):
        Gtk.main()

    def on_autenti_window_delete_event(self, *args):
        Gtk.main_quit(*args)

    def on_btn_auth_pressed(self, *args):
        print 'hola😀 '

    def __init__(self):
        import os.path
        self.builder = Gtk.Builder()
        self.builder.add_from_file(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "Glades/autenticar.glade")))
        self.builder.connect_signals(self)
        self.window = self.builder.get_object('autenti_window')
        self.window.set_size_request(800,600)
        self.webview = WebKit.WebView()
        self.scrolledwindow1 = self.builder.get_object('scrolledwindow1')
        self.scrolledwindow1.add(self.webview)
        self.webview.open("http://google.cl")
        self.window.show_all()

Importamos las librerías de Gtk (interfaz) y Webkit (navegador).

Luego definimos la clase y sus eventos:

  • mostrar para abrir la ventana
  • on_autenti_window_delete_event para cerrar la ventana
  • on_btn_auth_pressed para el evento del click al botón.

Las 2 últimas funciones/eventos las fijamos en el diseñador, y se guardan en el archivo .glade de esta forma:



  <!-- interface-requires gtk+ 3.0 -->

<!-- SIGUE -->

Bajo la etiqueta signal. Y eso es todo🙂  Selección_010

Es importante agregar el evento para cerrar la aplicación. Si no lo hacen va a quedar “abierta” para siempre.

Eso por ahora. Hice el post porque estoy aprendiendo y creando mi cliente para twitter de hace tiempo.

Fuentes:

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Gtk, Python. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s