使用 Tkinter 在 Python 中创建数字时钟

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

创建图形用户界面 (GUI) 应用程序的绝妙之处在于我们可以根据需要对其进行自定义。有各种可用于自定义的功能,从文本字体到背景颜色。在下面的教程中,我们将学习如何使用 Python 编程语言中的 Tkinter 库构建数字时钟。

那么,让我们开始吧。

项目先决条件

为了用 Python 中的 GUI 构建数字时钟,我们将需要以下模块

  1. Tkinter: tkinter 模块将允许我们为应用程序提供图形用户界面 (GUI)。
  2. 时间: time 模块将允许我们处理时间。

由于这两个模块都预装在 Python 中,因此我们无需单独安装它们。

使用 Python 中的 GUI 构建数字时钟

为了更好地理解,在 Python 中构建数字时钟的过程分为几个步骤。我们需要执行的步骤如下

第一步: 我们将从导入所需的模块开始。

步骤 2: 然后我们将定义显示当前时间的函数。

第三步: 接着,我们将为应用程序创建一个主窗口。

步骤 4: 我们将向窗口添加小部件。

现在让我们详细了解这些步骤。

导入所需模块

首先,我们将导入所有必要的模块来帮助我们构建此项目。这些模块包括用于向应用程序添加图形用户界面的 tkinter 模块和用于处理日期的 time 模块。

让我们考虑以下说明相同内容的代码片段。

文件:clock_gui.py

说明

在上面的代码片段中,我们从 tkinter 导入了所有模块和小部件,以向应用程序提供 GUI。我们还导入了 time 模块以显示时间。

定义显示当前时间的函数

现在我们将定义一个函数,该函数将允许我们在程序执行时显示当前时间。此函数将使用 tkinter 模块的 strftime() 方法以字符串格式表示当前时间。然后,我们将 24 小时时间转换为 12 小时时间,并根据要求将值设置为标签中的 AM 或 PM。我们还将评估值插入到我们稍后创建的标签中。

让我们考虑以下说明相同内容的代码片段。

文件:clock_gui.py

说明

在上面的代码片段中,我们定义了一个名为 display_time() 的函数。在此函数中,我们使用了 time 模块的 strftime() 方法以字符串格式表示当前时间,并将时间分为小时、分钟和秒并存储在不同的变量中。然后,我们使用 if-else 条件语句来检查小时范围是否在 12 到 24 之间且分钟是否大于或等于 0,然后将 meridiem_label 标签的值设置为 PM。如果不是,我们已将 meridiem_label 标签的值设置为 AM。然后,我们使用 if-elif 条件语句通过从 13 到 24 的小时中减去 12 来将 24 小时格式转换为 12 小时格式。在小时为 0 的情况下,我们还将小时的值设置为 12。然后,我们使用了 tkinter 模块的 config() 方法来将显示小时、分钟和秒的标签文本设置为我们之前评估的值。最后,我们调用了 after() 方法以每 200 毫秒调用一次 display_time() 函数。

创建应用程序的主窗口

现在我们已经定义了所需的函数,是时候创建应用程序的主窗口以显示函数的工作原理了。我们可以通过实例化 tkinter 模块的 Tk() 类来创建窗口。然后我们将为窗口设置适当的标题以及窗口的大小和位置。我们还将添加一个图标并配置窗口的背景颜色。让我们考虑以下代码片段来说明这一点。

文件:clock_gui.py

说明

在上面的代码片段中,我们创建了 Tk() 类的一个对象 gui_root,它代表应用程序的主窗口。然后,我们使用 title() 方法设置窗口的标题。我们还使用了 geometry() 方法设置窗口在屏幕上的大小和位置。然后,通过将 resizable() 方法的值设置为零,我们禁用了可调整大小的选项。我们还通过将 bg 参数的值设置为 #2C3C3F 来配置背景颜色。最后,我们借助 iconbitmap() 方法设置了窗口图标,指定了目录中 ICO 文件的地址。

向主窗口添加小部件

现在我们将向窗口添加一些小部件,以向用户显示数据。这些小部件包括一些框架和标签。框架将提供一个定义良好的结构,用于在窗口上放置其他小部件,而标签将显示标题和时间。

让我们详细了解这些小部件的实现,如下所示。

添加框架

我们将首先使用 tkinter 模块提供的 Frame() 小部件向主窗口添加一些框架。这些框架将为其他小部件提供支持。然后我们将使用 pack() 方法设置这些框架在窗口上的位置。

让我们考虑以下演示相同内容的代码片段。

文件:clock_gui.py

说明

在上面的代码片段中,我们使用 tkinter 模块的 Frame() 小部件添加了框架,并将其 master 参数设置为 gui_root,即我们之前创建的 Tk() 类对象。我们还将其背景颜色设置为 #2C3C3F。最后,我们使用了 pack() 方法来设置这些框架在窗口屏幕上的位置。

向 header_frame 框架添加小部件

现在我们将向 header_frame 框架添加一个标签以显示标题。我们可以使用 tkinter 模块提供的 Label() 小部件添加标签。我们还将使用 pack() 方法设置此标签在窗口屏幕上的位置。

让我们考虑以下说明相同内容的代码片段。

文件:clock_gui.py

说明

在上面的代码片段中,我们使用了 tkinter 模块的 Label() 小部件向窗口添加了一个标签,并将其 master 参数设置为 header_frame,即我们之前创建的框架。我们还设置了此标签将显示的文本以及字体样式和大小。我们还配置了标签的背景和前景颜色。最后,我们使用了 pack() 方法来设置标签在窗口屏幕上的位置。

向 body_frame 框架添加小部件

现在我们将向 body_frame 框架添加一些标签以显示时间。我们将再次使用 tkinter 模块的 Label() 小部件向窗口添加标签。我们还将使用 grid() 方法以网格格式在主窗口上设置这些标签的位置。

让我们考虑以下代码片段的实现。

文件:clock_gui.py

说明

在上面的代码片段中,我们使用了 tkinter 模块的 Label() 小部件向窗口添加了一些标签,这些标签显示了时钟的不同组件,例如小时、分钟、秒、AM 或 PM(根据时间)以及分隔这些组件的冒号。我们将这些标签的 master 参数设置为 body_frame,即我们之前创建的另一个框架。我们还设置了这些标签将显示的文本以及字体样式和大小。我们还配置了标签的背景和前景颜色。最后,我们使用了 grid() 方法来设置标签在窗口屏幕上的位置。

运行应用程序

成功添加所有必要的小部件后,是时候调用我们之前定义的 display_time() 函数并使用 mainloop() 方法运行应用程序了。

让我们考虑以下说明相同内容的代码片段。

文件:clock_gui.py

说明

在上面的代码片段中,我们调用了 display_time() 函数来启动时钟。然后我们使用 mainloop() 方法和 Tk() 类的对象,即 gui_root,来运行应用程序。

应用程序的编码部分已完成。我们将保存 Python 项目文件并在命令提示符或终端中键入以下命令来执行程序。

语法

在查看输出之前,让我们考虑一下“使用 Tkinter 的数字时钟”项目的完整代码。

完整的项目代码

以下是“使用 Python 中的 Tkinter 构建数字时钟”项目的完整代码。

文件:clock_gui.py

输出

Digital Clock using Tkinter in Python