使用 PyQt5 在 Python 中创建年龄计算器

2025年3月17日 | 阅读 12 分钟

在这篇文章中,我们将探讨如何使用PyQt5来开发一个年龄计算器。

年龄计算器是初学者一个很棒的编码项目想法。如果你是编程新手,应该尝试创建一个年龄计算器。它是一个程序,要求用户输入出生日期,并返回用户的年龄。所以,如果你有兴趣学习如何在Python中创建年龄计算器,这篇文章就是为你准备的。在这篇文章中,我们将为你介绍一个关于如何构建年龄计算器的Python教程。

PyQt5是跨平台的PyQt5 GUI工具包的一部分,它是Qt v5的Python绑定。这个工具包提供的功能和简洁性使得创建交互式桌面应用程序非常容易。它必须使用以下命令进行安装。

这个项目是为了计算一个人的当前年龄,通过输入他们的特定信息,如出生日期和当前日期,来确定年龄。

在开始项目之前的一些基本PyQt5要求

在Python中,使用虚拟环境来处理依赖项是最高效的方法。简单地说,虚拟环境是一个包含特定项目所需库的本地目录。相比之下,系统范围的安装会影响你所有项目中的这些库。

每个GUI程序都必须包含且仅包含一个QApplication实例,这是Qt的要求。导入行必须在Qt的几个组件正常工作之前运行。因此,它将几乎需要你在创建的每一个PyQt程序中。

PyQt应用程序的按钮、标签、窗口、对话框、进度条等都是小部件(widgets)的例子。小部件经常像HTML组件一样嵌套。例如,一个按钮可能位于一个窗口中,而窗口本身可能包含一个标签。

对自定义样式的支持是Qt的优势之一。你可以通过多种方式改变应用程序的外观和感觉。

除了上述之外,样式表还允许你改变应用程序的外观。这是Qt中的CSS等价物。

实现GUI的步骤

  1. 创建一个游戏标题的头部标签并设置其属性
  2. 创建一个出生日期标签,并在其下方放置一个QDateEdit对象来接收日期并设置其属性。
  3. 在下方创建一个带有给定日期的标签,然后创建一个QDateEdit对象来接收更新的日期并修改其属性。
  4. 设计一个按下时可以计算日期的按钮。
  5. 创建一个结果标签来显示结果,例如计算出的年龄。

后端实现

  1. 当日期改变时,为第一个QDateEdit添加一个动作。
  2. 在第一个日期编辑器的动作中,获取第二个日期编辑器的日期,并将其设置为第一个日期编辑器的最大日期。
  3. 当日期改变时,为第二个日期更新添加一个动作。
  4. 在第二个日期编辑器的动作中,获取第一个日期编辑器的日期,并将其设置为第二个日期编辑器的最小日期。
  5. 更改日期调整,使得第一个日期必须早于第二个日期。
  6. 让按钮执行某个操作。
  7. 使用结果标签,计算两个日期调整之间的日期差,并将其显示在屏幕上,表示差值。

代码 walkthrough

首先,我们将导入所有必需的库到我们的程序中以提高效率。导入的库包括QtWidgets、QtCore、QtGuisys

然后,我们将为新窗口创建一个新类并初始化其属性。然后,我们将窗口标题设置为“年龄计算器”,之后我们将设置其几何形状。之后,我们将显示窗口中的所有小部件。

接下来,我们将创建一个函数来介绍窗口中的所有组件。然后,我们将创建一个新的标题标签并设置其几何形状。在此之后,我们将介绍字体属性并将字体分别设置给标签,最后通过设置对齐方式和标题标签的颜色来完成。

然后,我们将创建一个新的dateOfBirth标签用于获取用户的出生日期,并设置其几何形状。在此之后,我们将介绍字体属性并将字体分别设置给标签,最后通过设置dateOfBirth标签的对齐方式来完成。

然后,我们将创建一个新的present标签用于获取用户输入的当前日期,并设置其几何形状。在此之后,我们通过设置对齐方式和present标签的字体样式来完成。

接下来,我们将初始化QDateEdit并编辑第一个日期。然后,我们将创建一个新的frst标签用于用户编辑第一个日期,并设置其几何形状。在此之后,我们通过设置其对齐方式、字体样式以及为标签添加动作以响应日期变化来完成。

接下来,我们将初始化QDateEdit并编辑日期。然后,我们将创建一个新的scnd标签用于用户编辑日期,并设置其几何形状。在此之后,我们通过设置其对齐方式、字体样式以及为标签添加动作以响应日期变化来完成。

然后,我们将创建一个新的推送按钮来开始计算用户的年龄。该推送按钮的名称为calculate。然后,我们将设置其几何形状,之后其颜色将与图形效果一起设置。最后,我们还将添加按钮按下后需要执行的操作。

然后,我们将创建一个新的result标签用于向用户显示计算出的年龄结果,并设置其几何形状。在此之后,我们通过设置对齐方式和result标签的字体样式来完成。接下来,我们将更新其样式表,提及所有属性及其值,如边框、背景等。最后,我们将单行标签转换为多行标签。

在设置frstscnd标签的默认日期后,我们将调用一个函数来修改第一个日期并设置其最大日期。然后,我们将调用一个函数来修改第二个日期并设置其最大日期。

接下来,我们将创建一个函数,以便在按下我们之前创建的推送按钮时调用。首先,我们将获取第一个设置的日期,即出生日期,格式为日、月、年。然后,我们将获取第二个设置的日期,即当前日期,格式为日、月、年。

然后,我们将使用if-else条件来计算准确的结果。如果出生日期超过指定的brth_month,则不计算当前月份,而是给日期加30,用该数字减去出生日期,然后计算剩余的天数。否则,如果出生月份大于当前月份,则不计算当前年份,而是加12个月,以便我们稍后可以进行减法并计算差值。

然后,我们将计算出生日期和当前日期之间的天数、月数和年数。这将通过用当前日期减去出生日期、用当前月份减去出生月份以及用当前年份减去出生年份来完成。然后,我们将在结果标签中以 n 天/天、n 月/月和 n 年/年的形式显示此结果,作为用户的实际年龄。

最后,我们将通过创建一个base来创建pyqt5应用程序。然后,我们将创建该窗口的一个实例,我们的应用程序将在其中显示或运行。最后,通过退出base来启动应用程序的执行。

完整代码

以下是用于创建年龄计算器的完整代码

输出

上述代码的输出已作为截图附在此处。

Age Calculator using PyQt5 in Python