How to Create a Web Browser with Python and PyQT
Enough of browsing, let’s create a browser with python
In today’s world, almost everyone is using the internet. To access the world wide web we need a browser.
In this article, we will be creating a simple web browser with python and PyQT5.
PyQT is a widely used module which is used to make GUI applications with much ease. We can develop many complex GUI applications using PyQT very easily. It has a modern look and light user interface. Even if you are not familiar with this module, you will be able to create a web browser as each and every line is explained in the code itself using comments.
We often confused between the terms web browser and search engine, so let’s quickly have a look at these two terms.
Search Engine: It is used to search the required information from the World Wide Web using a web browser. It actually allows us to search the internet.
Web Browser: It is used to access the World Wide Web / Internet.
Now, you might have a clear picture of the mentioned terms. We can use any search engine, so we will be using Google search engine in our project.
Create a Web Browser in Python
Our python web browser will have the following features:
- A Previous Button: to navigate to the previously visited site.
- A Next Button: to navigate to the next visited site.
- A Refresh Button: to reload the current site.
- A Search Bar: to load the entered url.
- A home button: to navigate back to home.
Prerequisites to create a web browser
To install the required libraries, please use pip installer from the cmd prompt/Terminal:
To install pyQT5:
pip install PyQt5
To install pyQtWebEngine
pip install PyQtWebEngine
Download python web browser code
Please download the source code of web browser python project: Web Browser Python Code
Create Web Browser Python File
main.py
import sys
#importing Widgtes
from PyQt5.QtWidgets import *
#importing Engine Widgets
from PyQt5.QtWebEngineWidgets import *
#importing QtCore to use Qurl
from PyQt5.QtCore import *
#main window class (to create a window)-sub class of QMainWindow class
class Window(QMainWindow):
#defining constructor function
def __init__(self):
#creating connnection with parent class constructor
super(Window,self).__init__()
#---------------------adding browser-------------------
self.browser = QWebEngineView()
#setting url for browser, you can use any other url also
self.browser.setUrl(QUrl('http://google.com'))
#to display google search engine on our browser
self.setCentralWidget(self.browser)
#-------------------full screen mode------------------
#to display browser in full screen mode, you may comment below line if you don't want to open your browser in full screen mode
self.showMaximized()
#----------------------navbar-------------------------
#creating a navigation bar for the browser
navbar = QToolBar()
#adding created navbar
self.addToolBar(navbar)
#-----------------prev Button-----------------
#creating prev button
prevBtn = QAction('Prev',self)
#when triggered set connection
prevBtn.triggered.connect(self.browser.back)
# adding prev button to the navbar
navbar.addAction(prevBtn)
#-----------------next Button---------------
nextBtn = QAction('Next',self)
nextBtn.triggered.connect(self.browser.forward)
navbar.addAction(nextBtn)
#-----------refresh Button--------------------
refreshBtn = QAction('Refresh',self)
refreshBtn.triggered.connect(self.browser.reload)
navbar.addAction(refreshBtn)
#-----------home button----------------------
homeBtn = QAction('Home',self)
#when triggered call home method
homeBtn.triggered.connect(self.home)
navbar.addAction(homeBtn)
#---------------------search bar---------------------------------
#to maintain a single line
self.searchBar = QLineEdit()
#when someone presses return(enter) call loadUrl method
self.searchBar.returnPressed.connect(self.loadUrl)
#adding created seach bar to navbar
navbar.addWidget(self.searchBar)
#if url in the searchBar is changed then call updateUrl method
self.browser.urlChanged.connect(self.updateUrl)
#method to navigate back to home page
def home(self):
self.browser.setUrl(QUrl('http://google.com'))
#method to load the required url
def loadUrl(self):
#fetching entered url from searchBar
url = self.searchBar.text()
#loading url
self.browser.setUrl(QUrl(url))
#method to update the url
def updateUrl(self, url):
#changing the content(text) of searchBar
self.searchBar.setText(url.toString())
MyApp = QApplication(sys.argv)
#setting application name
QApplication.setApplicationName('TechVidvan Web Browser')
#creating window
window = Window()
#executing created app
MyApp.exec_()
Python Web Browser Output
Summary
We have successfully created a web browser using python and pyqt5. Now you are familiar with another python’s GUI module (apart from tkinter).
We have explained the code using the comments in the code itself but still if you have any doubts. You may ask in the comment section.
Happy Coding !!!


