📜  PyQt5 – 节拍和呼吸计算器

📅  最后修改于: 2022-05-13 01:55:36.319000             🧑  作者: Mango

PyQt5 – 节拍和呼吸计算器

在本文中,我们将了解如何使用 PyQt5 创建一个心跳和呼吸计算器。下面是计算器的外观。

成年人的正常静息心率范围为每分钟 60 至 100 次。一般来说,较低的静息心率意味着更有效的心脏函数和更好的心血管健康。例如,训练有素的运动员的正常静息心率可能接近每分钟 40 次。
呼吸频率:一个人的呼吸频率是你每分钟呼吸的次数。成人休息时的正常呼吸频率为每分钟 12 至 20 次。休息时呼吸频率低于每分钟 12 次或超过 25 次被认为是异常的。

下面是实现

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())


输出 :