-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCases_Details.py
120 lines (80 loc) · 2.93 KB
/
Cases_Details.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
"""Creating 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."""
# 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())