PyQt5 – Calculadora de latidos y respiraciones

En este artículo veremos cómo podemos crear una calculadora de latidos cardíacos y respiraciones usando PyQt5. A continuación se muestra cómo se verá la calculadora. 
 

Una frecuencia cardíaca normal en reposo para adultos oscila entre 60 y 100 latidos por minuto. En general, una frecuencia cardíaca más baja en reposo implica una función cardíaca más eficiente y una mejor condición cardiovascular. Por ejemplo, un atleta bien entrenado podría tener una frecuencia cardíaca normal en reposo cercana a los 40 latidos por minuto.
Frecuencia respiratoria: La frecuencia respiratoria de una persona es el número de respiraciones que realiza por minuto. La frecuencia respiratoria normal de un adulto en reposo es de 12 a 20 respiraciones por minuto. Una frecuencia respiratoria inferior a 12 o superior a 25 respiraciones por minuto en reposo se considera anormal.
 

Pasos de implementación de GUI: 
1. Cree una etiqueta de encabezado que muestre el nombre de la calculadora 
2. Cree una etiqueta para mostrar al usuario que seleccione la fecha y la hora de nacimiento 
3. Cree un objeto QCalendarWidget para que el usuario seleccione la fecha de nacimiento 
4. Cree un objeto QTimeEdit para obtener la hora de nacimiento 
5. Cree un botón para calcular los latidos del corazón y las respiraciones 
6. Cree una etiqueta para mostrar los latidos y las respiraciones calculados
Implementación de back-end: 
1. Haga el bloque de fecha futura del calendario, es decir, establezca la fecha actual como fecha máxima 
2. Agregar acción al botón pulsador 
3. Dentro de la acción del botón pulsador obtener la fecha del calendario y la hora del QTimeEdit 
4. Obtenga el día, mes y año de la fecha y la hora y el minuto de la edición de tiempo 
5. Cree un objeto de fecha y hora para la fecha actual y la fecha de nacimiento 
6. Obtenga la diferencia de ambas fechas y obtenga los días y segundos 
7. Convierta días y segundos en minutos 
8. Obtenga los latidos del corazón y las respiraciones multiplicando los minutos con las tasas promedio. 
9. Muestre los latidos y respiraciones calculados con la ayuda de la etiqueta 
 

A continuación se muestra la implementación. 
 

Python3

# importing libraries
from PyQt5.QtWidgets import *
from PyQt5 import QtCore, QtGui
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import datetime
import sys
 
 
class Window(QMainWindow):
 
    def __init__(self):
        super().__init__()
 
        # setting title
        self.setWindowTitle("Python ")
 
        # width of window
        self.w_width = 400
 
        # height of window
        self.w_height = 550
 
        # setting geometry
        self.setGeometry(100, 100, self.w_width, self.w_height)
 
        # calling method
        self.UiComponents()
 
        # showing all the widgets
        self.show()
 
    # method for components
    def UiComponents(self):
        # creating head label
        head = QLabel("Beats and Breaths Calculator", self)
 
        head.setWordWrap(True)
 
        # setting geometry to the head
        head.setGeometry(0, 10, 400, 60)
 
        # font
        font = QFont('Times', 15)
        font.setBold(True)
        font.setItalic(True)
        font.setUnderline(True)
 
        # setting font to the head
        head.setFont(font)
 
        # setting alignment of the head
        head.setAlignment(Qt.AlignCenter)
 
        # setting color effect to the head
        color = QGraphicsColorizeEffect(self)
        color.setColor(Qt.darkCyan)
        head.setGraphicsEffect(color)
 
        # creating a label
        b_label = QLabel("Select Birthday and Time", self)
 
        # setting properties  label
        b_label.setAlignment(Qt.AlignCenter)
        b_label.setGeometry(50, 95, 300, 25)
        b_label.setStyleSheet("QLabel"
                              "{"
                              "border : 1px solid black;"
                              "background : rgba(70, 70, 70, 25);"
                              "}")
        b_label.setFont(QFont('Times', 9))
 
        # creating a calendar widget to select the date
        self.calendar = QCalendarWidget(self)
 
        # setting geometry of the calendar
        self.calendar.setGeometry(50, 120, 300, 180)
 
        # setting font to the calendar
        self.calendar.setFont(QFont('Times', 6))
 
        # getting current date
        date = QDate.currentDate()
 
        # blocking future dates
        self.calendar.setMaximumDate(date)
 
        # creating a time edit object to receive time
        self.time = QTimeEdit(self)
 
        # setting properties to the time
        self.time.setGeometry(50, 300, 300, 30)
        self.time.setAlignment(Qt.AlignCenter)
        self.time.setFont(QFont('Times', 9))
 
        # creating a push button
        calculate = QPushButton("Calculate", self)
 
        # setting geometry to the push button
        calculate.setGeometry(125, 360, 150, 40)
 
        # adding action to the calculate button
        calculate.clicked.connect(self.calculate_action)
 
        # creating a label to show percentile
        self.result = QLabel(self)
 
        # setting properties to result label
        self.result.setAlignment(Qt.AlignCenter)
        self.result.setGeometry(50, 420, 300, 110)
        self.result.setWordWrap(True)
        self.result.setStyleSheet("QLabel"
                                  "{"
                                  "border : 3px solid black;"
                                  "background : white;"
                                  "}")
        self.result.setFont(QFont('Arial', 11))
 
    def calculate_action(self):
        # getting birth date day
        birth = self.calendar.selectedDate()
 
        # getting year and month day of birth day
        birth_year = birth.year()
        birth_month = birth.month()
        birth_day = birth.day()
 
        # getting time of from the time edit
        time = self.time.time()
 
        # getting hour and seconds
        hour = time.hour()
        minute = time.minute()
 
        # getting today date
        current = QDate.currentDate()
 
        # getting year and month day of current day
        current = datetime.datetime.now()
 
        # converting  date into date object
        birth_date = datetime.datetime(birth_year, birth_month, birth_day, hour, minute, 0)
 
        # getting difference in both the dates
        difference = current - birth_date
 
        # getting difference in days
        days = difference.days
 
        # setting seconds
        seconds = difference.seconds
 
        # converting days and seconds into minutes
        minutes = seconds / 60 + days * 24 * 60
 
        heartbeat = int(minutes * 65)
 
        breath = int(minutes * 15)
 
        # setting this value with the help of label
        self.result.setText("You have taken " + str(breath) +
                            ", and your heart has beat " + str(heartbeat) +
                            " times since you were born.")
 
 
# create pyqt5 app
App = QApplication(sys.argv)
 
# create the instance of our Window
window = Window()
 
# 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *