Actualizado el 29/10/2022.
Descarga: navegador-web-pyqt-pyside.zip.
Código de fuente de un navegador web simple usando PySide 6 o PyQt 5/6. Adaptado del original Navegador web simple con PyQt 4. Antes de correr el código, asegurarse de tener instalado los paquetes correspondientes, según el paquete utilizado (en caso de no saber, elegir PySide6):
Para PySide6:
pip install pyside6
Para PyQt6:
pip install PyQt6 PyQt6-WebEngine
Para PyQt5:
pip install PyQt5 PyQtWebEngine
# # # Simple navegador web con PyQt/PySide. # # Recursos Python - www.recursospython.com # # import sys from PySide6.QtCore import QUrl from PySide6.QtWidgets import QApplication, QHBoxLayout, QLineEdit from PySide6.QtWidgets import QMainWindow, QPushButton, QVBoxLayout from PySide6.QtWidgets import QWidget from PySide6.QtWebEngineWidgets import QWebEngineView class Widgets(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("Simple Web Browser") self.widget = QWidget(self) # Widget para el navegador self.webview = QWebEngineView() self.webview.load(QUrl("https://www.recursospython.com/")) self.webview.urlChanged.connect(self.url_changed) # Ir hacia atrás self.back_button = QPushButton("<") self.back_button.clicked.connect(self.webview.back) # Ir hacia adelante self.forward_button = QPushButton(">") self.forward_button.clicked.connect(self.webview.forward) # Actualizar la página self.refresh_button = QPushButton("Actualizar") self.refresh_button.clicked.connect(self.webview.reload) # Barra de direcciones self.url_text = QLineEdit() # Cargar la página actual self.go_button = QPushButton("Ir") self.go_button.clicked.connect(self.url_set) self.toplayout = QHBoxLayout() self.toplayout.addWidget(self.back_button) self.toplayout.addWidget(self.forward_button) self.toplayout.addWidget(self.refresh_button) self.toplayout.addWidget(self.url_text) self.toplayout.addWidget(self.go_button) self.layout = QVBoxLayout() self.layout.addLayout(self.toplayout) self.layout.addWidget(self.webview) self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) def url_changed(self, url): """Actualizar la barra de direcciones""" self.url_text.setText(url.toString()) def url_set(self): """Acceder a un nuevo URL""" self.webview.setUrl(QUrl(self.url_text.text())) if __name__ == "__main__": app = QApplication(sys.argv) window = Widgets() window.show() sys.exit(app.exec())
# # # Simple navegador web con PyQt/PySide. # # Recursos Python - www.recursospython.com # # import sys from PyQt6.QtCore import QUrl from PyQt6.QtWidgets import QApplication, QHBoxLayout, QLineEdit from PyQt6.QtWidgets import QMainWindow, QPushButton, QVBoxLayout from PyQt6.QtWidgets import QWidget from PyQt6.QtWebEngineWidgets import QWebEngineView class Widgets(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("Simple Web Browser") self.widget = QWidget(self) # Widget para el navegador self.webview = QWebEngineView() self.webview.load(QUrl("https://www.recursospython.com/")) self.webview.urlChanged.connect(self.url_changed) # Ir hacia atrás self.back_button = QPushButton("<") self.back_button.clicked.connect(self.webview.back) # Ir hacia adelante self.forward_button = QPushButton(">") self.forward_button.clicked.connect(self.webview.forward) # Actualizar la página self.refresh_button = QPushButton("Actualizar") self.refresh_button.clicked.connect(self.webview.reload) # Barra de direcciones self.url_text = QLineEdit() # Cargar la página actual self.go_button = QPushButton("Ir") self.go_button.clicked.connect(self.url_set) self.toplayout = QHBoxLayout() self.toplayout.addWidget(self.back_button) self.toplayout.addWidget(self.forward_button) self.toplayout.addWidget(self.refresh_button) self.toplayout.addWidget(self.url_text) self.toplayout.addWidget(self.go_button) self.layout = QVBoxLayout() self.layout.addLayout(self.toplayout) self.layout.addWidget(self.webview) self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) def url_changed(self, url): """Actualizar la barra de direcciones""" self.url_text.setText(url.toString()) def url_set(self): """Acceder a un nuevo URL""" self.webview.setUrl(QUrl(self.url_text.text())) if __name__ == "__main__": app = QApplication(sys.argv) window = Widgets() window.show() try: sys.exit(app.exec_()) except AttributeError: sys.exit(app.exec())
# # # Simple navegador web con PyQt/PySide. # # Recursos Python - www.recursospython.com # # import sys from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication, QHBoxLayout, QLineEdit from PyQt5.QtWidgets import QMainWindow, QPushButton, QVBoxLayout from PyQt5.QtWidgets import QWidget from PyQt5.QtWebEngineWidgets import QWebEngineView class Widgets(QMainWindow): def __init__(self): QMainWindow.__init__(self) self.setWindowTitle("Simple Web Browser") self.widget = QWidget(self) # Widget para el navegador self.webview = QWebEngineView() self.webview.load(QUrl("https://www.recursospython.com/")) self.webview.urlChanged.connect(self.url_changed) # Ir hacia atrás self.back_button = QPushButton("<") self.back_button.clicked.connect(self.webview.back) # Ir hacia adelante self.forward_button = QPushButton(">") self.forward_button.clicked.connect(self.webview.forward) # Actualizar la página self.refresh_button = QPushButton("Actualizar") self.refresh_button.clicked.connect(self.webview.reload) # Barra de direcciones self.url_text = QLineEdit() # Cargar la página actual self.go_button = QPushButton("Ir") self.go_button.clicked.connect(self.url_set) self.toplayout = QHBoxLayout() self.toplayout.addWidget(self.back_button) self.toplayout.addWidget(self.forward_button) self.toplayout.addWidget(self.refresh_button) self.toplayout.addWidget(self.url_text) self.toplayout.addWidget(self.go_button) self.layout = QVBoxLayout() self.layout.addLayout(self.toplayout) self.layout.addWidget(self.webview) self.widget.setLayout(self.layout) self.setCentralWidget(self.widget) def url_changed(self, url): """Actualizar la barra de direcciones""" self.url_text.setText(url.toString()) def url_set(self): """Acceder a un nuevo URL""" self.webview.setUrl(QUrl(self.url_text.text())) if __name__ == "__main__": app = QApplication(sys.argv) window = Widgets() window.show() sys.exit(app.exec_())
Curso online 👨💻
¡Ya lanzamos el curso oficial de Recursos Python en Udemy!
Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter
en 2024.
Consultoría 💡
Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.
Andres says:
Buenos días,
Antes de nada, muchas gracias por el aporte.
Cuando ejecuto el código me aparece el siguiente error:
from PyQt5.QtWebEngineWidgets import QWebEngineView
ImportError: QtWebEngineWidgets must be imported before a QCoreApplication instance is created
Saludos
Recursos Python says:
Hola. Es raro el error. ¿Estás ejecutando exactamente el mismo código o modificaste algo?
Saludos
Andrés says:
Hoa. Si he probado exactamente el mismo código, también he probado con otros ejemplos parecidos y me aparece el mismo error, además intentado cambiar el orden al importar pero tampoco se soluciona así.
Recursos Python says:
¿Podés crear un tema en el foro así lo vemos mejor? Con imágenes y toda la información sobre tu sistema que puedas aportar. Saludos
Pablo says:
Hola! Tengo un problema: Cuando abro el navegador está todo bien. Pero cuando quiero ir a un sitio, la barra de direcciones tiene «about:blank» y la página esta totalmente en blanco. Muchas gracias por leer =)
Recursos Python says:
Hola, asegurate de poner la dirección de URL completa, con el prefijo
https://
. SaludosNigh says:
Hola buenas, tengo dos de preguntas espero que algun alma generosa pueda ayudarme :), mira soy nuevo en python y recien descubri esta pagina, muy didicactica por cierto y me encanta la interfaz que tiene, y queria descargarme este codigo para probarlo en mi pc, me he descargado el codigo, he instalado mediante el comando pip3 install PyQt5 el modulo para arrancar el programa pero me sale este error:
from PyQt5.QtWebEngineWidgets import QWebEngineView
ModuleNotFoundError: No module named ‘PyQt5.QtWebEngineWidgets’
Por cierto tengo windows 10.
Mi otra pregunta seria: Donde puedo encontrar informacion para trabajar con este modulo y poder crear cosas como este navegador por ejemplo de ante mano muchas gracias bye. :).
Recursos Python says:
Hola. ¿Qué versión de Python 3 estás ejecutando? ¿Tu versión de Windows es de 32 bit?
Nigh says:
Python 3.6.5 Windows 10 64bit
Recursos Python says:
Intentá instalando una versión anterior de PyQt:
pip3 uninstall PyQt5
pip3 install PyQt5==5.9
Nigh says:
Funciono correctamente muchas gracias por tomarte la molestia ayudarme :).
Recursos Python says:
Me alegro, de nada!