En este artículo, veremos cómo podemos crear una aplicación PyQt5 que informe sobre los detalles de los casos de coronavirus, es decir, casos totales, casos recuperados y muertes totales solo escribiendo el nombre del país.
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 cuadro combinado no editable, configure su geometría
2. Cree una lista de países que contenga el nombre de los países y agréguela al cuadro combinado
3. Cree tres etiquetas para mostrar información sobre el total de casos, casos recuperados y casos de muerte
4. Configure la geometría , alineación y borde de cada etiqueta
5. Agregue una acción al cuadro combinado
6. Dentro de la acción, obtenga el nombre del país y elimine los datos del sitio web con la ayuda de las requests BeautifulSoup
7. Convierta los datos sin procesar en código html y luego fíltrelos para obtener la salida requerida
8. Muestre la salida 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): # 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())
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