Creando un navegador simple usando PyQt5

En este artículo veremos cómo podemos crear un navegador simple usando PyQt5.

El navegador web es una aplicación de software para acceder a información en la World Wide Web. Cuando un usuario solicita una página web de un sitio web en particular, el navegador web recupera el contenido necesario de un servidor web y luego muestra la página en la pantalla.

PyQt5 es un kit de herramientas GUI multiplataforma, un conjunto de enlaces de Python para Qt v5. Uno puede desarrollar una aplicación de escritorio interactiva con tanta facilidad debido a las herramientas y la simplicidad que ofrece esta biblioteca.

Pasos de implementación de la GUI: 
1. Cree una ventana principal 
2. Cree un objeto QWebEngineView y agréguelo como widget central a la ventana principal 
3. Agregue la barra de estado a la ventana principal 
4. Cree una barra de herramientas y agregue el botón de navegación y la edición de línea a muestra la url, debajo está caliente, la barra de herramientas se verá así

Pasos de implementación de back-end: 
1. Agregar acción de actualización de URL al objeto QWebEngineView cuando se cambia la URL. 
2. Dentro de la acción de actualización de URL, cambie la URL de la barra de URL y cambie la posición del cursor 
. 3. Agregue otra acción de título de actualización al objeto QWebEngineView cuando finalice la carga 
. 4. Dentro del método de título de actualización, actualice el título de la ventana como el título de la página. 
5 Agregue acciones a los botones de navegación utilizando las funciones integradas del objeto QWebEngineView para recargar, retroceder, detener y avanzar 
6. Agregue una acción al botón de inicio y dentro de la acción cambie la URL a google.com 
7. Agregue una acción a la edición de línea cuando se presiona la tecla de retorno 
8. Dentro de la acción de edición de línea, obtenga el texto y convierta este texto en el objeto QUrl y configure el esquema si es nulo y configure esta URL en el objeto QWebEngineView
 

A continuación se muestra la implementación.  

Python3

# importing required libraries
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtPrintSupport import *
import os
import sys
 
# creating main window class
class MainWindow(QMainWindow):
 
    # constructor
    def __init__(self, *args, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
 
 
        # creating a QWebEngineView
        self.browser = QWebEngineView()
 
        # setting default browser url as google
        self.browser.setUrl(QUrl("http://google.com"))
 
        # adding action when url get changed
        self.browser.urlChanged.connect(self.update_urlbar)
 
        # adding action when loading is finished
        self.browser.loadFinished.connect(self.update_title)
 
        # set this browser as central widget or main window
        self.setCentralWidget(self.browser)
 
        # creating a status bar object
        self.status = QStatusBar()
 
        # adding status bar to the main window
        self.setStatusBar(self.status)
 
        # creating QToolBar for navigation
        navtb = QToolBar("Navigation")
 
        # adding this tool bar tot he main window
        self.addToolBar(navtb)
 
        # adding actions to the tool bar
        # creating a action for back
        back_btn = QAction("Back", self)
 
        # setting status tip
        back_btn.setStatusTip("Back to previous page")
 
        # adding action to the back button
        # making browser go back
        back_btn.triggered.connect(self.browser.back)
 
        # adding this action to tool bar
        navtb.addAction(back_btn)
 
        # similarly for forward action
        next_btn = QAction("Forward", self)
        next_btn.setStatusTip("Forward to next page")
 
        # adding action to the next button
        # making browser go forward
        next_btn.triggered.connect(self.browser.forward)
        navtb.addAction(next_btn)
 
        # similarly for reload action
        reload_btn = QAction("Reload", self)
        reload_btn.setStatusTip("Reload page")
 
        # adding action to the reload button
        # making browser to reload
        reload_btn.triggered.connect(self.browser.reload)
        navtb.addAction(reload_btn)
 
        # similarly for home action
        home_btn = QAction("Home", self)
        home_btn.setStatusTip("Go home")
        home_btn.triggered.connect(self.navigate_home)
        navtb.addAction(home_btn)
 
        # adding a separator in the tool bar
        navtb.addSeparator()
 
        # creating a line edit for the url
        self.urlbar = QLineEdit()
 
        # adding action when return key is pressed
        self.urlbar.returnPressed.connect(self.navigate_to_url)
 
        # adding this to the tool bar
        navtb.addWidget(self.urlbar)
 
        # adding stop action to the tool bar
        stop_btn = QAction("Stop", self)
        stop_btn.setStatusTip("Stop loading current page")
 
        # adding action to the stop button
        # making browser to stop
        stop_btn.triggered.connect(self.browser.stop)
        navtb.addAction(stop_btn)
 
        # showing all the components
        self.show()
 
 
    # method for updating the title of the window
    def update_title(self):
        title = self.browser.page().title()
        self.setWindowTitle("% s - Geek Browser" % title)
 
 
    # method called by the home action
    def navigate_home(self):
 
        # open the google
        self.browser.setUrl(QUrl("http://www.google.com"))
 
    # method called by the line edit when return key is pressed
    def navigate_to_url(self):
 
        # getting url and converting it to QUrl object
        q = QUrl(self.urlbar.text())
 
        # if url is scheme is blank
        if q.scheme() == "":
            # set url scheme to html
            q.setScheme("http")
 
        # set the url to the browser
        self.browser.setUrl(q)
 
    # method for updating url
    # this method is called by the QWebEngineView object
    def update_urlbar(self, q):
 
        # setting text to the url bar
        self.urlbar.setText(q.toString())
 
        # setting cursor position of the url bar
        self.urlbar.setCursorPosition(0)
 
 
# creating a pyQt5 application
app = QApplication(sys.argv)
 
# setting name to the application
app.setApplicationName("Geek Browser")
 
# creating a main window object
window = MainWindow()
 
# loop
app.exec_()

Producción : 

Publicación traducida automáticamente

Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *