Continuando con los tutoriales de PyQt, ahora toca explicar como crear un navegador web.
La idea es tener una ventana de entrada de datos donde se escribe el url a navegar, a su lado se tiene un botón que ejecuta la navegación al url dado, luego abajo se tiene el widget de navegación y por último abajo se tiene un botón de salir. Se puede navegar también dando enter en el campo del url.
El widget nuevo que se está usando es:
- QWebView: Permite crear una vista de navegación web.
El código del programa se muestra a continuación:
#!/usr/bin/env python # -*- coding: utf-8 -*- #Se importa el modulo sys import sys #De PyQt4 importar QtGui,QtCore y QtWebkit. from PyQt4 import QtGui from PyQt4 import QtCore from PyQt4 import QtWebKit class App(QtGui.QWidget): def __init__(self,parent=None): QtGui.QWidget.__init__(self, parent) #Se define el tamano de la ventana # posicion en x,y, ancho y alto self.setGeometry(0, 50, 1024, 550) #Se le coloca un titulo a la ventana y se asocia un icono. self.setWindowTitle('Navegador') self.setWindowIcon(QtGui.QIcon('./openlogo-50.png')) #Se crea una entrada de datos donde se pasa el url a navegar self.entradaUrl = QtGui.QLineEdit("http://www.debian.org.ve") #Se crea el boton para ir a una pagina web navegar = QtGui.QPushButton("Ir",self) #Se crea el boton salir quit = QtGui.QPushButton("Salir",self) #Se crea el widget donde se mostrara la pagina web self.web = QtWebKit.QWebView() #Se habilita el atributo de plugins self.web.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled,True) #Se carga la pagina de debian venezuela al inicio self.web.load(QtCore.QUrl("http://www.debian.org.ve")) #Empaquetamiento de los widgets en una cuadricula. grid = QtGui.QGridLayout() grid.setSpacing(10) #Se agrega la entrada de datos grid.addWidget(self.entradaUrl, 1, 0) #Se agrega el boton navegar al lado de la #entrada de datos grid.addWidget(navegar,1,1) #Se agrega el widget web grid.addWidget(self.web,2,0) #Se agrega el boton salir grid.addWidget(quit,3,0) #Se define el layout pasando la grilla self.setLayout(grid) #Se define la asociacion de segnales: #Se define la segnal del boton quit, salir del programa self.connect(quit, QtCore.SIGNAL('clicked()'),QtGui.qApp, QtCore.SLOT('quit()')) #Se define la segnal del boton navegar, al darle clip se ejecuta el metodo navegar self.connect(navegar,QtCore.SIGNAL('clicked()'),self.navegar) #Se define la segnal de la entrada de datos #Al darle enter se ejecuta el metodo navegar self.connect(self.entradaUrl,QtCore.SIGNAL('returnPressed()'),self.navegar) def navegar(self): #Navegar captura el texto de la entrada de datos #Y se carga la nueva pagina. url = self.entradaUrl.text() self.web.load(QtCore.QUrl("%s" %url)) #Se ejecuta el programa principal if __name__ == "__main__": #Se instancia la clase QApplication app = QtGui.QApplication(sys.argv) #Se instancia el objeto QuitButton qb = App() #Se muestra la aplicacion qb.show() #Se sale de la aplicacion sys.exit(app.exec_())
A continuación se muestra la ventana del navegador al ejecutar el programa:
La siguiente figura muestra que se escribe un url nuevo y se puede darle clip al botón ir o darle enter a la entrada de datos:
===
¡Haz tu donativo! Si te gustó el artículo puedes realizar un donativo con Bitcoin (BTC) usando la billetera digital de tu preferencia a la siguiente dirección: 17MtNybhdkA9GV3UNS6BTwPcuhjXoPrSzV
O Escaneando el código QR desde billetera:
