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 en India, es decir, resultados estatales.
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 implementaciones:
1. Obtenga una lista inteligente de estados de coronavirus y guárdela en una lista
2. Cree un cuadro combinado no editable, configure su geometría
3. De la lista, obtenga los nombres de los estados y agréguelos al cuadro combinado
4. Cree tres etiquetas para mostrar información sobre casos totales, casos recuperados y casos de muerte
5. Establezca la geometría, la alineación y el borde de cada etiqueta
6. Agregue una acción al cuadro combinado
7. Dentro de la acción, filtre la lista para obtener la información deseada
8. Muestre la salida de 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 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.corona() # calling method self.UiComponents() # showing all the widgets self.show() def corona(self): extract_contents = lambda row: [x.text.replace('\n', '') for x in row] URL = 'https://www.mohfw.gov.in/' SHORT_HEADERS = ['SNo', 'State', 'Indian-Confirmed', 'Foreign-Confirmed', 'Cured', 'Death'] response = requests.get(URL).content soup = BeautifulSoup(response, 'html.parser') header = extract_contents(soup.tr.find_all('th')) self.stats = [] all_rows = soup.find_all('tr') for row in all_rows: stat = extract_contents(row.find_all('td')) if stat: if len(stat) == 5: # last row stat = ['', *stat] self.stats.append(stat) elif len(stat) == 6: self.stats.append(stat) self.stats[-1][1] = "Total Cases" self.stats.remove(self.stats[-1]) # method for widgets def UiComponents(self): # 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.stats: self.combo_box.addItem(i[2]) # 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 index index = self.combo_box.currentIndex() # getting data total = self.stats[index][3] recovered = self.stats[index][4] deaths = self.stats[index][5] # 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