Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Get Corona cases details – Python PyQt5

  • Last Updated : 29 Dec, 2020

In this article we will see how we can create a PyQt5 application which tells about the cases of corona around the world i.e number of confirmed cases, number of cases in which patient has recovered and total deaths due to corona.

Modules required and Installation:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

PyQt5 : PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing.



Requests : Requests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs.

Beautiful Soup: Beautiful Soup is a library that makes it easy to scrape information from web pages. It sits atop an HTML or XML parser, providing Pythonic idioms for iterating, searching, and modifying the parse tree.

Implementations steps :

1. Create a push-button set its geometry
2. Create three labels to show information about total cases, recovered cases and death cases
3. Set geometry, alignment and border to each label
4. Add action to the push button
5. Inside the action scrap the data from the website with the help of requests BeautifulSoup
6. Convert the raw data into html code and then filter it to get the required output
7. Show the output the screen with the help of labels

Below is the implementation




# importing libraries
from PyQt5.QtWidgets import * 
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import * 
from PyQt5.QtCore import * 
from bs4 import BeautifulSoup as BS
import requests
import sys
  
  
class Window(QMainWindow):
  
    def __init__(self):
        super().__init__()
  
        # setting title
        self.setWindowTitle("Python ")
  
        # setting geometry
        self.setGeometry(100, 100, 400, 500)
  
        # calling method
        self.UiComponents()
  
        # showing all the widgets
        self.show()
  
    # method for widgets
    def UiComponents(self):
  
        # create push button to perform function
        push = QPushButton("Press", self)
  
        # setting geometry to the push button
        push.setGeometry(125, 100, 150, 40)
  
        # creating label to show the total cases
        self.label_total = QLabel("Total Cases ", self)
  
        # setting geometry
        self.label_total.setGeometry(100, 200, 200, 40)
  
        # setting alignment to the text
        self.label_total.setAlignment(Qt.AlignCenter)
  
        # adding border to the label
        self.label_total.setStyleSheet("border : 2px solid black;")
  
        # creating label to show the recovered cases
        self.label_reco = QLabel("Recovered Cases ", self)
  
        # setting geometry
        self.label_reco.setGeometry(100, 250, 200, 40)
  
        # setting alignment to the text
        self.label_reco.setAlignment(Qt.AlignCenter)
  
        # adding border
        self.label_reco.setStyleSheet("border : 2px solid black;")
  
        # creating label to show death cases
        self.label_death = QLabel("Total Deaths ", self)
  
        # setting geometry
        self.label_death.setGeometry(100, 300, 200, 40)
  
        # setting alignment to the text
        self.label_death.setAlignment(Qt.AlignCenter)
  
        # adding border to the label
        self.label_death.setStyleSheet("border : 2px solid black;")
  
        # adding action to the push button
        push.clicked.connect(self.get_cases)
  
    # method called by push
    def get_cases(self):
  
        # getting the request from url
        data = requests.get("https://www.worldometers.info/coronavirus/")
  
        # converting the text
        soup = BS(data.text, 'html.parser')
  
        # finding meta info for total cases
        total = soup.find("div", class_="maincounter-number").text
  
        # filtering it
        total = total[1: len(total) - 2]
  
        # finding meta info for other numbers
        other = soup.find_all("span", class_="number-table")
  
        # getting recovered cases number
        recovered = other[2].text
  
        # getting death cases number
        deaths = other[3].text
  
        # filtering the data
        deaths = deaths[1:]
  
        self.label_total.setText("Total Cases : " + total)
        self.label_reco.setText("Recovered Cases : " + recovered)
        self.label_death.setText("Total Deaths : " + deaths)
  
  
  
# create pyqt5 app
App = QApplication(sys.argv)
  
# create the instance of our Window
window = Window()
  
window.show()
  
# start the app
sys.exit(App.exec())

Output :




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!