En este artículo, veremos cómo podemos crear una aplicación PyQt5 que informe sobre los casos de corona en todo el mundo, es decir, la cantidad de casos confirmados, la cantidad de casos en los que el paciente se recuperó y el total de muertes debido a la corona.
Módulos requeridos e Instalación:
PyQt5 : PyQt es un enlace de Python del kit de herramientas GUI multiplataforma Qt, implementado como un complemento de Python. PyQt es un software libre desarrollado por la firma británica Riverbank Computing.
Requests : Requests le permite enviar requests HTTP/1.1 de forma extremadamente sencilla. No es necesario agregar manualmente strings de consulta a sus URL.
Beautiful Soup: Beautiful Soup es una biblioteca que facilita extraer información de las páginas web. Se asienta sobre un analizador HTML o XML, proporcionando modismos Pythonic para iterar, buscar y modificar el árbol de análisis.
Pasos de implementación:
1. Cree un pulsador y establezca su geometría
2. Cree tres etiquetas para mostrar información sobre el total de casos, casos recuperados y casos de muerte
3. Establezca geometría, alineación y borde para cada etiqueta
4. Agregue acción al pulsador
5. Dentro del acción eliminar los datos del sitio web con la ayuda de las requests BeautifulSoup
6. Convertir los datos sin procesar en código html y luego filtrarlos para obtener el resultado requerido
7. Mostrar el resultado en la pantalla con la ayuda de etiquetas
A continuación se muestra la implementación.
# 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())
Producción :
Publicación traducida automáticamente
Artículo escrito por rakshitarora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA