Hope you are doing great!
Today, We are going to make Covid-19 Tracker Application Using Python which you can assume to be a medium level project as we will need to use three Python libraries.
Here, we are going to create a GUI application to track the COVID-19 cases.
We need to use three different libraries here.
- tkinter – The tkinter package (“Tk interface”) is the standard Python interface to the Tk GUI toolkit.
- matplotlib – Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.
- covid – to get COVID data
To install “matplotlib” go to terminal and type
Code language: JSON / JSON with Comments (json)
"pip install matplotlib"
Python community has made a library to get the COVID-19 information easily called “covid“.
To install “
covid” go to terminal and type
pip install covid
Note:For this program use python version >= 3.6
Code With Comments
Now lets see and understand the code.
Code language: Python (python)
# importing tkinter from tkinter import * # initializing tkinter root = Tk() # setting geometry root.geometry("350x350") # setting title root.title("Get Covid-19 Data Country Wise") # function which will get covid data and will show it def showdata(): # importing matplotlib which will be used to show data graphically from matplotlib import pyplot as plt # to scale the data we are importing patches import matplotlib.patches as mpatches # importing covid library from covid import Covid # initializing covid library covid = Covid() # declaring empty lists to store different data sets cases =  confirmed =  active =  deaths =  recovered =  # using try and except to run program without errors try: # updating root root.update() # getting countries names entered by the user countries = data.get() # removing white spaces from the start and end of the string country_names = countries.strip() # replacing white spaces with commas inside the string country_names = country_names.replace(" ", ",") # splitting the string to store names of countries # as a list country_names = country_names.split(",") # for loop to get all countries data for x in country_names: # appending countries data one-by-one in cases list # here, the data will be stored as a dictionary # for one country i.e. for each country # there will be one dictionary in the list # which will contain the whole information # of that country cases.append(covid.get_status_by_country_name(x)) # updating the root root.update() # for loop to get one country data stored as dict in list cases for y in cases: # storing every Country's confirmed cases in the confirmed list confirmed.append(y["confirmed"]) # storing every Country's active cases in the active list active.append(y["active"]) # storing every Country's deaths cases in the deaths list deaths.append(y["deaths"]) # storing every Country's recovered cases in the recovered list recovered.append(y["recovered"]) # marking the color information on scaleusing patches confirmed_patch = mpatches.Patch(color='green', label='confirmed') recovered_patch = mpatches.Patch(color='red', label='recovered') active_patch = mpatches.Patch(color='blue', label='active') deaths_patch = mpatches.Patch(color='black', label='deaths') # plotting the scale on graph using legend() plt.legend(handles=[confirmed_patch, recovered_patch, active_patch, deaths_patch]) # showing the data using graphs # this whole for loop section is related to matplotlib for x in range(len(country_names)): plt.bar(country_names[x], confirmed[x], color='green') if recovered[x] > active[x]: plt.bar(country_names[x], recovered[x], color='red') plt.bar(country_names[x], active[x], color='blue') else: plt.bar(country_names[x], active[x], color='blue') plt.bar(country_names[x], recovered[x], color='red') plt.bar(country_names[x], deaths[x], color='black') # setting the title of the graph plt.title('Current Covid Cases') # giving label to x direction of graph plt.xlabel('Country Name') # giving label to y direction of graph plt.ylabel('Cases(in millions)') # showing the full graph plt.show() except Exception as e: # asking user to enter correct details # during entering the country names on GUI # please differentiate the country names # with spaces or comma but not with both # otherwise you will come to this section data.set("Enter correct details again") Label(root, text="Enter all countries names\nfor whom you want to get\ncovid-19 data", font="Consolas 15 bold").pack() Label(root, text="Enter country name:").pack() data = StringVar() data.set("Seperate country names using comma or space(not both)") entry = Entry(root, textvariable=data, width=50).pack() Button(root, text="Get Data", command=showdata).pack() root.mainloop()
In above bar chart you can see current covid cases around different countries like India ,United state & Japan.
Check out more python projects