Python PyQt5 CoronaVirus API Cases, Recovered Cases and Total Deaths Tracker of Different Countries GUI Script Desktop App Full Project For Beginners

Python PyQt5 CoronaVirus API Cases, Recovered Cases and Total Deaths Tracker of Different Countries GUI Script Desktop App Full Project For Beginners

 

Welcome folks today in this post we will be displaying coronavirus cases of different countries using pyqt5 library in python. All the full source code of the application is shown below.

 

 

Get Started

 

 

In order to get started you need to install the following library using the pip command as shown below

 

pip install pyqt5

 

After installing this library make an app.py file and copy paste the following code

 

app.py

 

 

# 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): 

        # countries list // user can add other countries as well 
        self.country = ["india", "us", "spain", "china", "russia", 
                            "pakistan", "nepal", "italy", "spain", 
                                                "uk", "brazil"] 

        # creating a combo box widget 
        self.combo_box = QComboBox(self) 

        # setting geometry to combo box 
        self.combo_box.setGeometry(100, 50, 200, 40) 

        # setting font 
        self.combo_box.setFont(QFont('Times', 10)) 

        # adding items to combo box 
        for i in self.country: 
            i = i.upper() 
            self.combo_box.addItem(i) 

        # adding action to the combo box 
        self.combo_box.activated.connect(self.get_cases) 

        # creating label to show the total cases 
        self.label_total = QLabel("Total Cases ", self) 

        # setting geometry 
        self.label_total.setGeometry(100, 300, 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, 350, 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, 400, 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;") 


    # method called by push 
    def get_cases(self): 

        # getting country name 
        index = self.combo_box.currentIndex() 
        country_name = self.country[index] 


        # creating url using country name 
        url = "https://www.worldometers.info/coronavirus/country/" + country_name + "/"

        # getting the request from url 
        data = requests.get(url) 

        # converting the text 
        soup = BS(data.text, 'html.parser') 

        # finding meta info for cases 
        cases = soup.find_all("div", class_="maincounter-number") 

        # getting total cases number 
        total = cases[0].text 

        # filtering it 
        total = total[1: len(total) - 2] 

        # getting recovered cases number 
        recovered = cases[2].text 

        # filtering it 
        recovered = recovered[1: len(recovered) - 1] 

        # getting death cases number 
        deaths = cases[1].text 

        # filtering it 
        deaths = deaths[1: len(deaths) - 1] 

        # show data through labels 
        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())

 

See also  Python 3 Pynput Keylogger Script to Save Keystrokes inside Notepad Log TXT File Full Project For Beginners

 

Now if you execute the above script by typing the below command

 

python app.py

 

 

 

As you can see you can select the country and then see the total cases and recovered cases and total deaths for the selected country in the desktop app

Leave a Reply