4/1/2011

Crear un Navegador web básico con python+gtk+webkit

Volviendo a la programación con python, glade y gtk; ahora explicare como hacer un navegador sencillo usando webkit en python.

Este post se basa en el artículo del Blog de Marcelo, la diferencia es que el programo sin glade la interfaz gráfica.

En la siguiente figura se muestra la interfaz gráfica de la aplicación.

La aplicación simplemente tiene una entrada de texto para el URL donde se le puede dar enter para cargar la página o al botón de "ir"; la página se cargará en el frame con barras deslizantes en el centro de la interfaz y se tiene un botón para salir del navegador. Por defecto se carga una página al iniciar la aplicación.

El código de la aplicación se muestra a continuación:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Importar los módulos gtl y webkit


import gtk
import webkit


    
#La clase App hereda threading.Thread
class App:
    def __init__(self):
     #Método constructor, asociando los widgets
        #Asociar el archivo glade al objeto Builder.
        self.glade_file = "navegador.glade"
        self.glade = gtk.Builder()
        self.glade.add_from_file(self.glade_file)
        #Asociando la ventana del navegador
        self.ventana = self.glade.get_object('navegador')
        #Asociando el boton salir
        self.bsalir = self.glade.get_object('bsalir')
        #Asociando el boton navegar
        self.navegar = self.glade.get_object('navegar')
        #Asociando la entrada de texto del url a navegar
        self.enlace = self.glade.get_object('url')
        #Asociando la ventana con las barras deslizantes
        self.scrolledwindow1 = self.glade.get_object('scrolledwindow1')
        #Conectores
        #Conectar de destruir la ventana principal
        self.ventana.connect("destroy",self.on_navegador_destroy)
        #Conectar del boton salir
        self.bsalir.connect('clicked', self.on_bsalir_clicked)
        #Conector del boton navegar
        self.navegar.connect('clicked',self.on_navegar_clicked)
        #Conector de dar enter a la entrada de texto
        self.enlace.connect('activate',self.on_url_activate)
        #Asociando página por defecto.
        #Instanciando la clase webview
        self.webview = webkit.WebView()
        #Agregando webview a la ventana con barras deslizantes
        self.scrolledwindow1.add(self.webview)
        #Abriendo una página por defecto
        self.__navegacion("http://www.debian.org")
        
        #Se muestra la ventana principal del programa
        self.ventana.show_all()
    
    #Si se da enter a la entrada de texto se captura el url y se navega
    def on_url_activate(self,*args):
        url = "http://" + self.enlace.get_text()
        self.__navegacion(url)


    #Se abre el url con webview
    def __navegacion(self,url):
        self.webview.open(url)
        
        
    def on_navegador_destroy(self,*args):
        #Se cierra la aplicación
        gtk.main_quit()
    
    def on_bsalir_clicked(self,*args):
     #Se cierra la aplicación al darle clip al boton salir.
        gtk.main_quit()
    
    def on_navegar_clicked(self,*args):
        #Se navega el url al darle clip al boton
        url = "http://" + self.enlace.get_text()
        self.__navegacion(url)
    
    def main(self):
     #Inicia la aplicación
        gtk.main()


if __name__ == '__main__':
    app = App()
    app.main()


En la siguiente figura se muestra el navegador en funcionamiento.
Publicar un comentario en la entrada

AddThis