PyQt5 – 年龄最近的生日计算器

PyQt5 – 年龄最近的生日计算器

在这篇文章中,我们将看到我们如何创建一个年龄最近的生日计算器。年龄最近的计算器是用来获取与出生日期最接近的年龄的计算器。下面是年龄最近的计算器的样子

PyQt5 - 年龄最近的生日计算器

概念: 我们可以通过获得出生日期和现在日期之间的差异来获得年龄最近的生日,在python的帮助下,日期对象将保持闰年计数,我们可以获得日期之间的天数。然后这些天数可以除以365.32422得到年数,然后年数的整数值将是最接近生日的年龄。

GUI实施步骤:

1.创建一个标题标签,显示计算器的名称

2.创建标签以显示用户选择出生日期。

3.创建一个QCalendarWidget对象让用户选择出生日期

4.创建一个按钮来计算最近的年龄

5.创建一个标签来显示计算出的年龄

**后端实现: **

1.创建一个日历的未来日期块,即 “未来”。使日历成为未来日期块,即设置当前日期为最大日期

2.为按钮添加动作

3.在按钮动作中,从日历中获取日期和当前日期

4.从这两个日期中获取日、月和年

5.为这两个日期创建一个datetime.date对象

6.从这两个日期中获取差值并得到天数

7.用365.24除以天数。用365.2422(由于闰年)除以天数,得到总年数

8.获取年份的整数,并通过标签显示这个值

以下是实现方法

# 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 = 500
 
        # 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("Age Nearest Birthday 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", self)
 
        # setting properties  label
        b_label.setAlignment(Qt.AlignCenter)
        b_label.setGeometry(50, 105, 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, 130, 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 push button
        calculate = QPushButton("Calculate Time", self)
 
        # setting geometry to the push button
        calculate.setGeometry(125, 340, 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, 400, 300, 60)
        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 today date
        current = QDate.currentDate()
 
        # getting year and month day of current day
        current_year = current.year()
        current_month = current.month()
        current_day = current.day()
 
        # converting  dates into date object
        birth_date = datetime.date(birth_year, birth_month, birth_day)
        current_date = datetime.date(current_year, current_month, current_day)
 
        # getting difference in both the dates
        difference = current_date - birth_date
 
        # getting days from the difference
        difference = difference.days
 
        # getting years from the difference
        years = difference / 365.2422
 
        # getting round value of years
        years = round(years)
 
        # setting this value with the help of label
        self.result.setText("Closest Age is : " + str(years))
 
 
 
# create pyqt5 app
App = QApplication(sys.argv)
 
# create the instance of our Window
window = Window()
 
# start the app
sys.exit(App.exec())

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程